/* -*- c++ -*- */
/*
 * Copyright 2018 Ahmet Inan, Ron Economos.
 *
 * This file is part of gr-dvbs2rx.
 *
 * SPDX-License-Identifier: GPL-3.0-or-later
 */

/*
 * DVB-S2X LDPC parity bit address tables
 *
 * Entries below copied from:
 * http://www.etsi.org/deliver/etsi_en/302300_302399/30230702/01.01.01_20/en_30230702v010101a.pdf
 *
 */

#ifndef DVB_S2X_TABLES_HH
#define DVB_S2X_TABLES_HH

struct DVB_S2X_TABLE_B1 {
    static const int M = 360;
    static const int N = 64800;
    static const int K = 14400;
    static const int LINKS_MIN_CN = 3;
    static const int LINKS_MAX_CN = 4;
    static const int LINKS_TOTAL = 201599;
    static const int DEG_MAX = 11;
    static constexpr int DEG[] = { 11, 3, 0 };
    static constexpr int LEN[] = { 20, 20, 0 };
    static constexpr int POS[] = {
        5332,  8018,  35444, 13098, 9655,  41945, 44273, 22741, 9371,  8727,  43219,
        41410, 43593, 14611, 46707, 16041, 1459,  29246, 12748, 32996, 676,   46909,
        9340,  35072, 35640, 17537, 10512, 44339, 30965, 25175, 9918,  21079, 29835,
        3332,  12088, 47966, 25168, 50180, 42842, 40914, 46726, 17073, 41812, 34356,
        15159, 2209,  7971,  22590, 20020, 27567, 4853,  10294, 38839, 15314, 49808,
        20936, 14497, 23365, 22630, 38728, 28361, 34659, 956,   8559,  44957, 22222,
        28043, 4641,  25208, 47039, 30612, 25796, 14661, 44139, 27335, 12884, 6980,
        32584, 33453, 1867,  20185, 36106, 30357, 809,   28513, 46045, 27862, 4802,
        43744, 13375, 36066, 23604, 30766, 6233,  45051, 23660, 20815, 19525, 25207,
        27522, 3854,  9311,  21925, 41107, 25773, 26323, 24237, 24344, 46187, 44503,
        10256, 20038, 12177, 26635, 5214,  14191, 34404, 45807, 4938,  4173,  31344,
        32043, 26501, 46725, 4648,  16718, 31060, 26633, 19036, 14222, 13886, 26535,
        18103, 8498,  36814, 34600, 36495, 36712, 29833, 27396, 11877, 42861, 1834,
        36592, 1645,  3649,  30521, 14674, 3630,  890,   13307, 41412, 24682, 9907,
        4401,  44543, 13784, 5828,  32862, 25179, 29736, 39614, 5186,  49749, 38317,
        41460, 39101, 50080, 40137, 32691, 26528, 35332, 44067, 8467,  14286, 10470,
        12211, 34019, 37870, 36918, 36419, 33153, 50070, 41498, 47741, 30538, 12342,
        33751, 23988, 33624, 41882, 34075, 25552, 3106,  17611, 13190, 29336, 312,
        5667,  35483, 35460, 16153, 37267, 28308, 50009, 46345, 34204, 32756, 38243,
        5657,  24157, 36834, 6890,  49576, 46244, 43875, 16738, 47225, 2944,  36882,
        30341, 48485, 3700,  14451, 20438, 18875, 13634, 41138, 42962, 46459, 13369,
        27974, 21493, 14629, 2369,  11351, 40226, 42457, 34749, 39000, 3912,  18128,
        46776, 47055, 2221,  26806, 11345, 35143, 630,   2229,  44009, 41295, 34646,
        32163, 16657, 26544, 31770, 23641, 43623, 45826, 10902, 39490, 7514,  20480,
        28511, 11429, 19834, 35430, 50112, 38163, 5738,  16191, 16862, 6783,  6085,
        39149, 34988, 41497, 32023, 28688,
    };
};

struct DVB_S2X_TABLE_B2 {
    static const int M = 360;
    static const int N = 64800;
    static const int K = 18720;
    static const int LINKS_MIN_CN = 4;
    static const int LINKS_MAX_CN = 5;
    static const int LINKS_TOTAL = 226079;
    static const int DEG_MAX = 12;
    static constexpr int DEG[] = { 12, 3, 0 };
    static constexpr int LEN[] = { 24, 28, 0 };
    static constexpr int POS[] = {
        15210, 4519,  18217, 34427, 18474, 16813, 28246, 17687, 44527, 31465, 13004,
        43601, 28576, 13611, 24294, 15041, 503,   11393, 26290, 9278,  19484, 20742,
        13226, 28322, 32651, 27323, 22368, 15522, 37576, 20607, 20152, 19741, 26700,
        31696, 21061, 35991, 44168, 27910, 31104, 34776, 38835, 45450, 40002, 31522,
        7807,  26330, 2410,  44983, 15861, 39215, 14631, 42584, 26502, 41864, 27885,
        32276, 29049, 16878, 37480, 42550, 38795, 13012, 7912,  4058,  23869, 3325,
        42889, 19921, 13826, 40323, 18162, 10005, 35100, 5483,  7629,  35166, 1239,
        10772, 5289,  286,   16172, 41843, 42612, 38493, 11997, 40340, 19047, 16236,
        43557, 9104,  24032, 2915,  19265, 36209, 6443,  40947, 43527, 29675, 4195,
        31926, 35392, 20400, 7515,  45806, 36068, 33079, 37325, 6301,  4580,  20492,
        40934, 14478, 8238,  2425,  28901, 43602, 7224,  17640, 28259, 6850,  41859,
        14006, 19132, 5690,  16223, 11575, 30562, 44797, 3759,  9833,  36529, 21084,
        45546, 16044, 26763, 13559, 29092, 41595, 5726,  13733, 9164,  15354, 20145,
        10655, 24076, 40883, 13424, 30325, 40589, 32367, 36270, 9286,  40151, 8501,
        3871,  22109, 26239, 29805, 5358,  44835, 11609, 3899,  9760,  39600, 43422,
        13295, 45431, 14515, 5392,  37010, 12386, 40193, 21492, 45146, 12376, 41952,
        43153, 45733, 718,   35726, 33884, 38006, 16927, 20958, 25413, 44561, 11245,
        12984, 35198, 30977, 31916, 10657, 1412,  1048,  14965, 31879, 29967, 41000,
        32087, 22,    34773, 768,   27289, 19898, 43051, 6964,  31807, 4119,  33509,
        15950, 6304,  2813,  35192, 38282, 39710, 26356, 9889,  18957, 6355,  18770,
        40381, 1876,  38889, 17958, 20309, 10744, 1744,  228,   41543, 36505, 32795,
        12454, 8520,  4916,  22313, 1363,  13010, 8770,  17057, 8694,  22987, 29564,
        13804, 3110,  1382,  33844, 15117, 42314, 36045, 25295, 28421, 22044, 15951,
        42952, 17458, 6926,  21257, 41243, 8662,  17046, 15054, 15302, 16964, 40079,
        13359, 45754, 16715, 9586,  10960, 25406, 14675, 8880,  5087,  12303, 28993,
        13571, 24824, 31012, 4121,  808,   30962, 28736, 11013, 20488, 7715,  7637,
        6217,  25114, 23615, 5760,  5554,  18072, 21605, 39242, 24190, 6592,  12281,
        44681, 6563,  7001,  18291, 19605, 33476, 2884,  30927, 18430, 23674, 36414,
        30649, 15364, 22089, 19757, 41162, 14454, 17627, 16676, 28573, 22163, 8851,
        36803, 27589, 40049, 476,   1413,  41013, 34505, 33296, 29782, 38018, 42124,
        22625, 7485,  11772, 2052,  37567, 14082, 30106, 43203, 20858, 7399,  3796,
        22396, 38745, 792,   44483, 28268, 33355, 41030, 30098, 37269, 12871, 35769,
        33119, 16738, 3307,  43434, 13244, 17852, 9133,  23190, 35184, 20115, 24202,
        14760, 43026, 19425, 26414, 16821, 6625,  30362, 35769, 42608
    };
};

struct DVB_S2X_TABLE_B3 {
    static const int M = 360;
    static const int N = 64800;
    static const int K = 29160;
    static const int LINKS_MIN_CN = 6;
    static const int LINKS_MAX_CN = 7;
    static const int LINKS_TOTAL = 249479;
    static const int DEG_MAX = 12;
    static constexpr int DEG[] = { 12, 4, 3, 0 };
    static constexpr int LEN[] = { 27, 9, 45, 0 };
    static constexpr int POS[] = {
        30649, 35117, 23181, 15492, 2367,  31230, 9368,  13541, 6608,  23384, 18300,
        5905,  1961,  8950,  20589, 17688, 9641,  1877,  4937,  15293, 24864, 14876,
        6516,  10165, 4229,  26034, 28862, 8265,  27847, 3,     22728, 13946, 27162,
        26003, 17696, 13261, 31719, 25669, 17149, 17377, 33106, 12630, 4814,  16334,
        1480,  32952, 11187, 3849,  30186, 20938, 7946,  23283, 11042, 28080, 26642,
        34560, 11302, 4991,  5121,  6879,  13445, 22794, 18048, 15116, 5657,  9853,
        15581, 34960, 13240, 11176, 17937, 25081, 4868,  28235, 30286, 29706, 7073,
        6773,  10390, 27002, 13015, 7388,  14772, 19581, 11765, 16642, 11431, 19588,
        20154, 8027,  29758, 5501,  6398,  4268,  21337, 21136, 2275,  7899,  25943,
        12939, 14478, 20369, 22877, 3591,  12217, 19130, 24252, 32444, 24599, 21382,
        4689,  3524,  11304, 20423, 13677, 19639, 10577, 28279, 22330, 30722, 21622,
        26233, 3921,  17722, 6843,  5999,  8186,  2355,  33632, 34632, 30285, 9616,
        19909, 30417, 19587, 27853, 13896, 3689,  155,   20457, 33362, 21739, 22779,
        33862, 3713,  32975, 9403,  2836,  23109, 11099, 3505,  14562, 17309, 26470,
        4843,  12279, 24216, 26340, 22073, 32570, 12936, 19797, 21801, 8918,  7999,
        24408, 5783,  25190, 8817,  29367, 17017, 6208,  21402, 2280,  2110,  7975,
        32039, 34605, 1235,  912,   23116, 33017, 31405, 638,   4707,  31760, 18043,
        3507,  11989, 26632, 32829, 11262, 9274,  2553,  10697, 13507, 15323, 27080,
        3752,  33191, 12363, 24664, 14068, 1416,  21670, 26696, 18570, 25197, 1517,
        7765,  32686, 6572,  30901, 28242, 17802, 24056, 35388, 26895, 8023,  31249,
        29290, 13440, 7156,  17367, 21472, 27219, 14447, 9655,  11100, 27918, 2900,
        33262, 15301, 4664,  15728, 1185,  24818, 32995, 31108, 16368, 34978, 31690,
        30464, 13044, 5492,  10047, 2768,  14336, 30880, 32780, 10993, 24750, 7022,
        19718, 26036, 19145, 21177, 33949, 17135, 5193,  33718, 2539,  13920, 25537,
        918,   18514, 14530, 13699, 11902, 22721, 8335,  35346, 24655, 3332,  14708,
        20822, 11191, 24064, 32825, 12321, 11771, 23299, 31325, 25526, 16785, 22212,
        34075, 9066,  31209, 27819, 5974,  19918, 26831, 33338, 26647, 9480,  28489,
        7827,  18562, 2401,  17395, 23192, 10277, 28458, 23028, 18793, 10463, 10740,
        616,   24647, 4153,  10128, 2873,  22381, 8132,  18239, 31614, 4193,  32313,
        7575,  25801, 27591, 19872, 17992, 4609,  9114,  14764, 13516, 19192, 9882,
        13112, 16075, 12510, 28902, 8784,  32679, 4578,  34533, 30609, 25543, 13739,
        3465,  5330,  999,   33254, 13085, 5001,  29061, 28369, 79,    17750, 13399,
        24851, 9524,  30966, 10422, 18251, 34810, 12259, 25103, 25193, 16945, 1059,
        11266, 13612, 30508, 24778, 25364, 1322,  14492, 11111, 13693, 15125, 8205,
        1749,  8494,  9902,  9395,  23936, 3981,  22799, 28448, 28076, 26544, 19652,
        13424, 8915,  2885,  11356, 3241,  1609,  10284, 24350, 2462,  19358, 15717,
        29327, 15960, 14743, 5388,  32927, 1288,  19074, 6322,  32214, 34208, 30535,
        35462, 23415, 20836, 21819, 17986, 12196, 30030, 8422,  2647,  5710,  3200,
        23132, 23337, 22307, 29841, 4813,  15309, 26942, 29970, 23288, 7493,  3005,
        20661, 34283, 33192, 23033, 9541,  6424,  22003, 24665, 5534,  4684,  1411,
        33340, 26042, 6426,  3808,  285,   21942, 14302, 16023, 6825,  20084, 34878,
        12295, 32028, 2591,  178,   24107, 16379, 2912,  9912,  15375, 16120, 28375,
        20170, 726,   11291, 8185,  13471, 8448,  23205, 14239, 17896, 17950, 19308,
        1591,  3170,  23836, 18879, 12853, 10678, 18431, 21157, 31624, 3153,  27682,
        12433, 3458,  312,   4844,  13138, 17715, 35138, 15456, 30507, 33307, 30783
    };
};

struct DVB_S2X_TABLE_B4 {
    static const int M = 360;
    static const int N = 64800;
    static const int K = 35640;
    static const int LINKS_MIN_CN = 8;
    static const int LINKS_MAX_CN = 9;
    static const int LINKS_TOTAL = 262439;
    static const int DEG_MAX = 13;
    static constexpr int DEG[] = { 13, 3, 0 };
    static constexpr int LEN[] = { 27, 72, 0 };
    static constexpr int POS[] = {
        20834, 22335, 21330, 11913, 6036,  15830, 11069, 10539, 4244,  15068, 7113,
        2704,  16224, 2010,  5628,  27960, 11690, 22545, 24432, 4986,  21083, 17529,
        4104,  11941, 21239, 9602,  689,   13248, 1777,  4876,  2537,  20869, 15718,
        9575,  18164, 5294,  13914, 21711, 23374, 9675,  21239, 13600, 24710, 10613,
        14804, 19412, 23270, 26741, 10503, 25258, 17816, 25210, 12518, 8680,  6422,
        22715, 25097, 26959, 3913,  26493, 7797,  25977, 4896,  27063, 20781, 21715,
        12850, 7963,  4027,  4295,  14931, 18158, 616,   20570, 8720,  16487, 19050,
        23925, 7939,  21089, 15170, 24325, 6651,  22352, 5633,  27903, 2685,  1310,
        5594,  9296,  25670, 25121, 13906, 8217,  25390, 9112,  13945, 9826,  10844,
        11418, 10724, 11518, 9280,  9576,  25979, 23644, 16073, 27407, 3476,  28057,
        4003,  2279,  17490, 7558,  9538,  22115, 20439, 20708, 22572, 14997, 15780,
        5159,  11356, 10931, 8514,  23275, 2560,  912,   15935, 20703, 26467, 17173,
        21964, 15469, 21967, 10380, 16222, 15106, 16786, 19542, 28560, 18387, 27909,
        14897, 6167,  24295, 1266,  16902, 9546,  11628, 12048, 24495, 3706,  22629,
        14165, 2333,  19403, 18738, 28140, 13141, 6151,  22785, 9620,  4290,  2342,
        4902,  15856, 19033, 22820, 15761, 1985,  9160,  4435,  11164, 5442,  23572,
        6951,  19077, 15406, 16658, 18324, 19229, 16997, 10094, 19982, 22821, 7810,
        19660, 1182,  21968, 16564, 17453, 10780, 17034, 16405, 11,    28611, 10411,
        15799, 15705, 2773,  28601, 19333, 19447, 16790, 4618,  15841, 23854, 24686,
        4131,  1013,  2141,  6052,  11896, 18719, 16813, 22420, 23406, 21052, 4333,
        17754, 16425, 17614, 26883, 12101, 8224,  13979, 6869,  25215, 25991, 28968,
        19337, 25361, 20513, 1671,  14990, 20692, 24951, 19446, 7163,  4959,  13197,
        19201, 3883,  22532, 15468, 11856, 22758, 23586, 16985, 18396, 7434,  11817,
        363,   11824, 285,   20897, 16646, 16095, 17011, 25144, 14916, 6302,  20972,
        25439, 6156,  21776, 19701, 27803, 9695,  12941, 23541, 27425, 6979,  27910,
        7378,  8983,  6280,  4134,  28860, 8079,  20892, 28776, 7899,  23399, 87,
        18045, 23929, 25876, 15560, 23629, 18376, 4053,  14655, 2450,  11907, 19535,
        28543, 3513,  4704,  16512, 16554, 14062, 2596,  10357, 17316, 1011,  22090,
        11353, 20300, 15300, 18536, 14293, 4746,  28831, 20028, 16742, 16835, 28405,
        11245, 10802, 20242, 17737, 9590,  20693, 26547, 22557, 22517, 6285,  5336,
        3998,  2351,  6628,  22949, 1517,  4712,  1770,  9207,  28522, 14116, 5455,
        13105, 18709, 3030,  4217,  6306,  27448, 1943,  23866, 20212, 18857, 14794,
        21425, 15659, 4446,  21140, 13454, 21115, 3271,  1443,  2153,  12424, 6159,
        23559, 22473, 26065, 15914, 22980, 12766, 3482,  16233, 5719,  27020, 12322,
        24014, 25438, 26499, 26506, 21987, 16027, 6832,  17330, 2620,  20756, 15985,
        10471, 23302, 593,   6869,  27185, 22961, 9129,  25646, 10702, 12334, 23959,
        6375,  23299, 26942, 8029,  4072,  24051, 15147, 5113,  14725, 1451,  27291,
        28731, 18808, 11561, 249,   28962, 21405, 18944, 6889,  3314,  23457, 27708,
        14530, 8795,  6185,  28821, 6550,  2259,  17627, 701,   20819, 18831, 20140,
        4991,  11369, 4282,  13230, 3413,  27092, 14556, 5068,  16209, 4337,  24652,
        498,   715,   28883, 2285,  16524, 25513, 26034, 21067, 15122, 21667, 27982,
        15280, 3313,  7563,  22779, 22453, 4744,  17277, 27210, 19170, 10806, 18815,
        26424, 26442, 7837,  26264, 28931, 6020,  4645,  20678, 13160, 18111, 28045,
        23883, 5128,  10876, 3087,  28551, 26276, 3541,  20152, 10181, 28172, 26430,
        14769, 6809,  4956,  16130, 11348, 1691,  10216, 5743,  7848,  20236, 2661,
        10660, 8321,  6155,  2757,  6963,  2596,  27791, 6707,  258,   12785, 21176,
        15450, 7477,  17274, 25201, 262,   18996, 15836, 5287,  11970, 13365, 3098,
        17823, 10786, 21831, 14476, 11447, 1893,  3625,  25404, 20880, 21987, 1228,
        20942, 15045, 21358, 18237, 28914, 15673, 24273, 284,   9803,  13949, 15670,
        16693, 15553, 27782, 22644, 27980, 24820, 27733, 7015,  20974, 10016, 26164,
        20314, 25916, 11489, 13663, 11777, 18230, 11483, 5655,  1618,  19977, 26521,
        25639, 13184, 28994, 3821,  18349, 13846
    };
};

struct DVB_S2X_TABLE_B5 {
    static const int M = 360;
    static const int N = 64800;
    static const int K = 37440;
    static const int LINKS_MIN_CN = 9;
    static const int LINKS_MAX_CN = 10;
    static const int LINKS_TOTAL = 273599;
    static const int DEG_MAX = 13;
    static constexpr int DEG[] = { 13, 12, 3, 0 };
    static constexpr int LEN[] = { 8, 24, 72, 0 };
    static constexpr int POS[] = {
        12918, 15296, 894,   10855, 350,   453,   11966, 1667,  18720, 12943, 24437,
        8135,  2834,  11861, 3827,  15431, 8827,  8253,  23393, 15048, 5554,  16297,
        2994,  6727,  19453, 2371,  26414, 3044,  20240, 18313, 11618, 3145,  10976,
        5786,  5609,  16358, 2547,  11557, 14755, 26434, 2510,  26719, 4420,  6753,
        917,   7821,  26765, 11684, 9811,  5420,  6653,  19554, 11928, 20579, 17439,
        19103, 21162, 11235, 19172, 22254, 3420,  10558, 3646,  11858, 24120, 10189,
        8172,  5004,  26082, 4345,  5139,  15135, 26522, 6172,  17492, 8462,  4392,
        4546,  27330, 21498, 13424, 8077,  10165, 9739,  482,   23749, 1515,  12788,
        10464, 9085,  20875, 12009, 22276, 18401, 7541,  5871,  23053, 16979, 16300,
        13566, 19424, 5293,  18290, 23917, 9613,  24175, 11374, 11736, 17676, 13126,
        20931, 20290, 20659, 2000,  7969,  9386,  21507, 24494, 11822, 21771, 26776,
        21175, 27354, 15815, 7598,  19809, 611,   10144, 195,   14244, 7229,  13002,
        14328, 17987, 14595, 6985,  7642,  9434,  7079,  5571,  10013, 3641,  14064,
        11716, 4620,  18119, 23365, 26446, 26273, 25164, 11262, 26019, 15166, 19403,
        5606,  20138, 1893,  645,   5414,  12097, 18635, 21648, 12255, 13269, 1895,
        9969,  8372,  17737, 21679, 17061, 20219, 2513,  27199, 11242, 17025, 1261,
        12845, 13086, 16256, 15177, 20822, 10862, 18375, 6751,  17532, 24725, 6966,
        18489, 8373,  25550, 20688, 16686, 7894,  24599, 21578, 12516, 7115,  4836,
        23473, 25162, 14375, 9150,  6606,  21633, 16224, 23708, 20350, 4575,  143,
        13356, 10239, 22868, 10760, 19807, 7079,  16382, 26236, 22606, 16777, 24312,
        16941, 26684, 8658,  19279, 15136, 8603,  332,   2898,  21821, 23778, 3232,
        12052, 14336, 7832,  5600,  27015, 14392, 26564, 21616, 8332,  21750, 10379,
        19730, 7553,  27352, 2718,  15202, 25661, 6891,  13210, 15284, 21940, 8742,
        10965, 3176,  25034, 25137, 25161, 13267, 7012,  4993,  9943,  13260, 20980,
        20224, 20129, 2120,  23111, 16640, 23548, 21445, 10794, 4846,  2858,  22663,
        12584, 20448, 4629,  17825, 22269, 11278, 26312, 9463,  21085, 24282, 18233,
        9220,  14979, 24106, 14507, 24838, 19689, 17589, 7926,  7893,  21701, 12253,
        26122, 8035,  20823, 2584,  4703,  25178, 5460,  4190,  7057,  1144,  8426,
        12354, 7216,  19484, 4110,  22105, 1452,  11457, 12539, 27106, 14256, 14113,
        20701, 2547,  26926, 25933, 11919, 12026, 24639, 19741, 15457, 9239,  26713,
        22838, 6051,  8782,  14714, 23363, 450,   19972, 2622,  19473, 24182, 2391,
        26205, 10018, 9202,  15690, 10472, 20263, 469,   18876, 23660, 9005,  12595,
        23818, 26430, 926,   6156,  5440,  5209,  14958, 9882,  18843, 22063, 12749,
        18473, 22546, 11768, 4493,  12833, 18540, 3544,  9471,  15893, 14761, 23479,
        22010, 15491, 19608, 25035, 9094,  24836, 15909, 16594, 23538, 25136, 25063,
        24995, 5354,  905,   18580, 15476, 20710, 7774,  6088,  17133, 11498, 4721,
        17594, 18267, 1645,  23638, 26645, 14800, 17920, 22016, 12927, 350,   19391,
        19447, 19886, 25992, 26120, 1747,  11234, 1588,  23170, 27232, 2230,  15468,
        18709, 17410, 11055, 20645, 3244,  25815, 14204, 2858,  7980,  12780, 3256,
        20418, 24355, 24260, 16245, 20948, 11122, 1503,  15651, 19272, 24054, 6075,
        4905,  931,   18884, 23633, 17244, 6067,  5568,  26403, 490,   16113, 16055,
        10524, 23013, 8138,  12876, 20699, 20123, 15435, 27272, 27296, 22638, 7658,
        17259, 20553, 14914, 17891, 12137, 16323, 1085,  18895, 21503, 17141, 2915,
        21979, 23246, 1271,  14409, 11303, 12604, 25591, 12157, 14704, 18739, 19265,
        8140,  11244, 5962,  6647,  3589,  6029,  6489,  16416, 185,   9426,  1267,
        14086, 22473, 17159, 22404, 23608, 7230,  22514, 21605, 7645,  1239,  10717,
        12028, 13404, 12140, 14784, 15425, 14895, 26165, 18980, 15386, 14399, 7725,
        14908, 8463,  22853, 22095, 5517,  1854,  8283,  24381, 260,   12595, 839,
        23743, 22445, 13473, 8017,  7716,  8697,  13050, 16975, 26656, 16911, 11972,
        26173, 2504,  15216, 7493,  6461,  12840, 4464,  14912, 3745,  21461, 9734,
        25841, 4659,  7599,  9984,  17519, 7389,  75,    12589, 9862,  8680,  23053,
        21981, 25299, 19246, 3243,  15916, 21733, 4467,  26491, 4959,  10093, 20074,
        9140,  15000, 12783, 854,   10701, 25850, 13624, 7755,  10789, 3977,  15812,
        10783, 5830,  6774,  10151, 21375, 25110, 5830,  15985, 18342, 2623,  4716,
        27211, 18500, 18370, 12487, 7335,  4362,  21569, 16881, 10421, 15454, 13015,
        5794,  1239,  9934
    };
};

struct DVB_S2X_TABLE_B6 {
    static const int M = 360;
    static const int N = 64800;
    static const int K = 40320;
    static const int LINKS_MIN_CN = 9;
    static const int LINKS_MAX_CN = 10;
    static const int LINKS_TOTAL = 244799;
    static const int DEG_MAX = 11;
    static constexpr int DEG[] = { 11, 7, 3, 0 };
    static constexpr int LEN[] = { 24, 4, 84, 0 };
    static constexpr int POS[] = {
        24402, 4786,  12678, 6376,  23965, 10003, 15376, 15164, 21366, 24252, 3353,
        8189,  3297,  18493, 17994, 16296, 11970, 16168, 15911, 20683, 11930, 3119,
        22463, 11744, 13833, 8279,  21652, 14679, 23663, 4389,  15110, 17254, 17498,
        13616, 426,   18060, 598,   19615, 9494,  3987,  8014,  13361, 4131,  13185,
        4176,  17725, 14717, 3414,  10033, 17879, 8079,  12107, 10852, 1375,  19459,
        1450,  4123,  2111,  17490, 13209, 8048,  15285, 4422,  11667, 18290, 19621,
        2067,  15982, 304,   8658,  19120, 6746,  13569, 19253, 2227,  22778, 23826,
        11667, 11145, 20469, 17485, 13697, 3712,  4258,  16831, 22634, 18035, 7275,
        23804, 14496, 17938, 15883, 14984, 15944, 2816,  22406, 22111, 2319,  14731,
        8541,  12579, 22121, 8602,  16755, 6704,  23740, 16151, 20297, 9633,  1100,
        19569, 10549, 19086, 21110, 11659, 6901,  21295, 7637,  11756, 8293,  9071,
        9527,  9135,  7181,  19534, 2157,  788,   13347, 17355, 17509, 711,   20116,
        21217, 15801, 12175, 9604,  17521, 2127,  21103, 1346,  8921,  7976,  3363,
        11036, 5152,  19173, 8086,  3571,  1955,  4146,  13309, 15934, 19132, 5510,
        12935, 13966, 15399, 16179, 8206,  19233, 16702, 7127,  12185, 15420, 1383,
        6222,  6384,  20549, 18914, 23658, 11189, 638,   9297,  17741, 9747,  13598,
        17209, 11974, 20776, 2146,  9023,  3192,  19646, 3393,  1727,  15588, 20185,
        5008,  3885,  5035,  15852, 5189,  13877, 15177, 3049,  22164, 16540, 21064,
        24004, 10345, 12255, 36,    24008, 8764,  13276, 13131, 2358,  24010, 16203,
        21121, 21691, 8555,  11918, 129,   8860,  23600, 3042,  3949,  19554, 12319,
        22514, 11709, 11874, 11656, 536,   9142,  3901,  580,   1547,  10749, 5529,
        3324,  6251,  1156,  112,   13086, 5373,  5119,  132,   18069, 10482, 19519,
        17279, 2017,  14846, 21417, 17154, 21735, 18788, 11759, 192,   16027, 6234,
        20417, 3788,  15159, 22188, 21251, 16633, 13579, 8128,  1841,  23554, 15056,
        12104, 9182,  6147,  1553,  12750, 4071,  6495,  4961,  18460, 23266, 10785,
        10973, 4405,  2707,  7665,  7043,  1968,  3589,  15378, 9642,  21148, 13073,
        13298, 20040, 13582, 17124, 348,   12055, 378,   7476,  9838,  15454, 5218,
        14834, 17678, 3445,  18453, 2767,  388,   12638, 5688,  56,    6360,  20009,
        872,   16872, 10206, 5551,  477,   10662, 23689, 19768, 8965,  17535, 4421,
        19397, 18734, 5422,  10043, 22104, 21682, 508,   1588,  23853, 1092,  7288,
        4358,  2283,  22298, 10504, 15022, 8592,  22291, 11844, 17038, 2983,  17404,
        14541, 6446,  20724, 7498,  2993,  14715, 9410,  6844,  20213, 14674, 263,
        4822,  20951, 635,   20651, 23174, 5057,  22237, 9229,  4859,  17280, 9586,
        20334, 19508, 8068,  11375, 5776,  21209, 9418,  6872,  6349,  20397, 11165,
        19619, 13108, 13550, 10715, 5122,  5655,  10699, 8415,  9864,  4985,  7986,
        6436,  3754,  7690,  4257,  17119, 5328,  659,   4687,  6006,  527,   10824,
        8234,  11291, 1735,  22513, 7254,  2617,  1493,  3015,  7462,  10953, 15705,
        2181,  11992, 4628,  19430, 18223, 9426,  21808, 13549, 17008, 3470,  22568,
        13643, 24195, 21816, 936,   14226, 22874, 6156,  19306, 18215, 23984, 14714,
        12907, 5139,  18639, 15609, 11908, 5446,  8958,  6315,  16864, 15814, 10686,
        22570, 16196, 203,   4208,  13716, 494,   14172, 11778, 15112, 14244, 8417,
        21087, 4602,  15570, 19758, 4401,  22270, 8218,  11940, 5009,  23833, 13785,
        12569, 1698,  7113,  18541, 18711, 19991, 19673, 8025,  17107, 14784, 5954,
        6817,  19810, 24143, 12236, 18063, 23748, 23956, 10369, 7805,  13982, 13861,
        5198,  10889, 6787,  10406, 13918, 3305,  12219, 6523,  12999, 9964,  2004,
        17361, 23759, 21507, 11984, 4188,  19754, 13358, 8027,  3662,  2411,  19762,
        16017, 9125,  2393,  4619,  5452,  24176, 6586,  10895, 15872, 1795,  15801,
        6911,  15300, 14787, 2584,  4905,  8833,  1327,  12862, 9476,  16768, 12633,
        7400,  11983, 6276,  18370, 12939, 12793, 20048, 20284, 12949, 21345, 19545,
        4503,  16017, 1253,  12068, 18813
    };
};

struct DVB_S2X_TABLE_B7 {
    static const int M = 360;
    static const int N = 64800;
    static const int K = 41400;
    static const int LINKS_MIN_CN = 9;
    static const int LINKS_MAX_CN = 10;
    static const int LINKS_TOTAL = 233999;
    static const int DEG_MAX = 11;
    static constexpr int DEG[] = { 11, 6, 3, 0 };
    static constexpr int LEN[] = { 20, 5, 90, 0 };
    static constexpr int POS[] = {
        2475,  3722,  16456, 6081,  4483,  19474, 20555, 10558, 4351,  4052,  20066,
        1547,  5612,  22269, 11685, 23297, 19891, 18996, 21694, 7927,  19412, 15951,
        288,   15139, 7767,  3059,  1455,  12056, 12721, 7938,  19334, 3233,  5711,
        6664,  7486,  17133, 2931,  20176, 20158, 9634,  20002, 13129, 10015, 13595,
        218,   22642, 9357,  11999, 22898, 4446,  8059,  1913,  22365, 10039, 15203,
        10305, 22970, 7928,  16564, 8402,  9988,  7039,  10195, 22389, 5451,  8731,
        19073, 1005,  18826, 11109, 13748, 11891, 21530, 15924, 21128, 6841,  11064,
        3240,  11632, 18386, 22456, 3963,  14719, 4244,  4599,  8098,  7599,  12862,
        5666,  11543, 9276,  19923, 19171, 19591, 6005,  8623,  22777, 1255,  20078,
        17064, 13244, 323,   11349, 6637,  8611,  6695,  4750,  20985, 18144, 5584,
        20309, 6210,  16745, 10959, 14284, 2893,  20916, 10985, 9664,  9065,  11703,
        17833, 21598, 22375, 12890, 10779, 11241, 13115, 9222,  21139, 1217,  15337,
        15514, 12517, 18953, 11458, 17296, 8751,  7213,  12078, 4994,  4391,  14976,
        3842,  21548, 10955, 11679, 16551, 8514,  17999, 20557, 16497, 12122, 23056,
        10551, 20186, 66,    11038, 22049, 2130,  1089,  22093, 9069,  3470,  8079,
        19208, 22044, 2732,  1325,  22309, 967,   22951, 1366,  11745, 5556,  6926,
        2805,  18271, 10046, 4277,  207,   19518, 17387, 9701,  8515,  6813,  10532,
        19714, 21923, 13493, 1768,  18819, 6093,  14086, 13695, 12781, 9782,  445,
        22160, 15778, 13629, 10312, 19769, 8567,  22096, 15558, 19730, 11861, 18492,
        10729, 16847, 273,   4119,  4392,  11480, 20396, 3505,  7220,  390,   5546,
        17277, 8531,  17390, 22364, 7167,  2217,  7325,  3832,  19899, 21104, 8400,
        3906,  6218,  20330, 14943, 14477, 5614,  1582,  21534, 14286, 14624, 14809,
        6775,  22838, 15786, 6527,  15848, 5288,  13523, 9692,  12696, 15315, 602,
        17081, 6828,  13578, 3492,  6510,  20337, 6113,  5090,  7290,  20122, 15539,
        19267, 10412, 19090, 17863, 2546,  2295,  19448, 20296, 2296,  2627,  6740,
        14224, 10460, 12878, 6055,  15452, 15152, 15699, 563,   15414, 21900, 19161,
        11126, 15975, 3733,  4379,  15742, 6475,  17203, 5870,  18537, 4912,  260,
        21115, 23164, 4273,  1694,  1082,  5287,  11152, 14537, 2277,  19232, 13414,
        15608, 12926, 17043, 18241, 18313, 208,   6118,  20777, 9140,  19241, 22845,
        18527, 5035,  4161,  20867, 22650, 5585,  7875,  10358, 1898,  3563,  14833,
        21329, 14705, 3359,  13959, 4507,  11976, 20017, 22424, 12925, 8308,  8739,
        15561, 8010,  6408,  20723, 20928, 12337, 7864,  15777, 12742, 20430, 17351,
        6259,  1865,  9808,  8343,  17441, 2551,  2167,  3025,  23181, 22718, 13243,
        4797,  4223,  4982,  4395,  1609,  16748, 17625, 8463,  15204, 19632, 6583,
        9112,  20284, 11334, 19370, 4763,  746,   18560, 15222, 8796,  12725, 15176,
        10245, 15567, 9991,  17447, 18373, 21523, 1473,  5286,  15793, 17675, 21170,
        6699,  15515, 15942, 8733,  7047,  11348, 14584, 20435, 19603, 1961,  18851,
        7069,  11402, 19180, 6487,  2979,  2650,  13282, 9040,  22613, 23266, 4786,
        20832, 3001,  23129, 3850,  5255,  6601,  19827, 15438, 13956, 15798, 4430,
        11318, 4724,  8719,  21209, 18127, 844,   21379, 7427,  22987, 10233, 22949,
        8145,  21778, 7622,  14471, 18874, 8566,  14340, 3381,  3373,  419,   11514,
        15127, 917,   13136, 19375, 18740, 4951,  960,   2856,  17804, 662,   8107,
        10298, 10993, 11755, 19142, 11400, 18818, 521,   7210,  18658, 8285,  9496,
        20836, 5655,  14654, 13694, 12705, 20381, 16473, 7271,  12796, 3280,  23370,
        13893, 7667,  1736,  5485,  18321, 7789,  11242, 18771, 17282, 817,   21060,
        15985, 666,   20461, 22464, 7696,  19774, 4324,  12239, 14014, 4759,  5011,
        10472, 4137,  3047,  2444,  3818,  1594,  20382, 538,   7051,  21874, 1697,
        18539, 26,    21487
    };
};

struct DVB_S2X_TABLE_B8 {
    static const int M = 360;
    static const int N = 64800;
    static const int K = 45000;
    static const int LINKS_MIN_CN = 12;
    static const int LINKS_MAX_CN = 13;
    static const int LINKS_TOTAL = 257399;
    static const int DEG_MAX = 11;
    static constexpr int DEG[] = { 11, 9, 3, 0 };
    static constexpr int LEN[] = { 25, 5, 95, 0 };
    static constexpr int POS[] = {
        11863, 9493,  4143,  12695, 8706,  170,   4967,  798,   9856,  6015,  5125,
        12288, 19567, 18233, 15430, 1671,  3787,  10133, 15709, 7883,  14260, 17039,
        2066,  12269, 14620, 7577,  11525, 19519, 6181,  3850,  8893,  272,   12473,
        8857,  12404, 1136,  19464, 15113, 12598, 12147, 4987,  13843, 12152, 13241,
        1354,  12339, 4308,  23,    12677, 11533, 3187,  11609, 4740,  14630, 19630,
        14508, 10946, 3928,  580,   3526,  17836, 3786,  15739, 13991, 1238,  1071,
        6977,  13222, 13811, 585,   8154,  2579,  8314,  12185, 15876, 7738,  5691,
        12901, 12576, 11597, 4893,  17238, 15556, 8106,  12472, 10455, 14530, 17432,
        8373,  12875, 16582, 14611, 14267, 15093, 2405,  9342,  18326, 12125, 9257,
        5861,  12284, 2441,  13280, 2762,  5076,  17758, 4359,  6156,  18961, 13208,
        4400,  8474,  19629, 19528, 14125, 12780, 12740, 19316, 491,   4761,  1719,
        7270,  6615,  1175,  15848, 6943,  18360, 8905,  13921, 10807, 19688, 18757,
        8312,  12234, 17907, 17254, 7699,  18399, 5508,  12215, 4818,  18107, 2874,
        19496, 13973, 10432, 13445, 15320, 13648, 1501,  10549, 6710,  8897,  1998,
        1575,  12713, 10916, 5316,  13713, 11318, 4055,  5782,  5828,  17981, 3141,
        12177, 10726, 4244,  3138,  15996, 6822,  7495,  5257,  8909,  6180,  10680,
        6650,  1909,  19146, 1038,  17229, 10050, 3051,  9793,  10839, 3532,  14759,
        5337,  8448,  4939,  14792, 7585,  17860, 8612,  2229,  18965, 1519,  2031,
        13845, 9320,  579,   15441, 15050, 752,   8303,  6989,  13360, 12927, 15255,
        17286, 3639,  1733,  16883, 8457,  9475,  2939,  3234,  1993,  8554,  9939,
        6359,  15474, 12100, 6992,  13844, 16988, 7481,  16977, 9052,  9262,  15270,
        7181,  3624,  3814,  16379, 182,   4338,  17627, 3315,  5745,  14093, 15574,
        10709, 18662, 6909,  11248, 5268,  412,   5854,  16782, 16059, 10498, 5061,
        13321, 617,   6734,  3718,  15441, 19241, 17214, 1682,  18641, 18646, 6330,
        7377,  16951, 14477, 6507,  9922,  11464, 2563,  5702,  12691, 10606, 17874,
        7198,  12571, 17617, 4862,  18899, 7100,  8130,  9665,  10779, 6789,  11459,
        17651, 3693,  13332, 3854,  7737,  12589, 15189, 16260, 14569, 9442,  17890,
        18097, 6845,  6960,  1376,  8099,  12719, 14986, 18999, 14013, 3449,  13618,
        14807, 265,   1508,  11231, 966,   15957, 8315,  3384,  2570,  5700,  10911,
        17372, 153,   8445,  19598, 7841,  14806, 54,    2492,  14099, 11718, 18608,
        4278,  333,   59,    3982,  16986, 3494,  12496, 2775,  18320, 10650, 16234,
        9739,  16537, 19706, 7587,  19072, 18775, 14133, 12042, 2922,  229,   17958,
        15889, 5130,  11029, 271,   5122,  7021,  7067,  12258, 16611, 9245,  15493,
        15347, 15939, 741,   12055, 2822,  12804, 3480,  5690,  18598, 19273, 16354,
        2569,  16771, 13693, 15051, 853,   956,   12256, 2756,  15137, 15685, 2802,
        16479, 14687, 12470, 3583,  15473, 17781, 867,   4843,  6765,  13122, 11287,
        3680,  19101, 4609,  11385, 13470, 12353, 6632,  206,   10984, 3116,  1263,
        9419,  14455, 19438, 9528,  1808,  435,   2238,  12870, 10119, 10868, 8402,
        11111, 11081, 7197,  2667,  13780, 10759, 19722, 3768,  3052,  1836,  446,
        1642,  12388, 16876, 8398,  14485, 7301,  14815, 13811, 5678,  10419, 14396,
        1877,  14384, 12817, 19028, 19589, 6893,  8725,  6346,  676,   13611, 12486,
        2054,  11203, 14908, 14692, 18139, 5334,  1253,  16233, 9749,  16946, 18885,
        4332,  16306, 3862,  10395, 13871, 3747,  8900,  3381,  13367, 14132, 7220,
        15095, 4219,  15869, 13519, 18079, 17541, 19012, 13943, 19471, 2221,  5710,
        13711, 5185,  3363,  10195, 9580,  17331, 15360, 14387, 7596,  9614,  17336,
        6371,  6030,  14629, 10636, 10159, 2402,  9170,  4321,  1040,  5899,  153,
        7710,  7637,  13966, 10919, 8535,  3791,  1968,  2567,  4986,  4166,  8744,
        17691, 540,   10695, 10019, 17710, 1188,  10821, 5858,  17012, 17389, 3083,
        17587, 12682, 5354,  9537,  6807,  4964,  15942, 9653,  9000,  17053, 13291,
        11685, 8503,  10777, 13919, 18155, 9877,  1625,  15314, 13879, 18520, 7074,
        17061, 3748,  2752,  7298,  493,   19163, 14139, 2260,  18339, 10688, 8928,
        17695, 10276, 7640,  18547, 3561,  11275, 5297,  13167, 19691, 19542, 15725,
        11837, 7273,  11297, 17873, 7840,  19563, 8109,  3811,  18417, 17759, 17623,
        13175, 10041, 4152,  2249,  18452, 1450,  19309, 9161,  11651, 4614,  11547,
        14058, 639,   9384,  3272,  12368, 5898,  2578,  14635, 15963, 6733,  11048
    };
};

struct DVB_S2X_TABLE_B9 {
    static const int M = 360;
    static const int N = 64800;
    static const int K = 46800;
    static const int LINKS_MIN_CN = 13;
    static const int LINKS_MAX_CN = 14;
    static const int LINKS_TOTAL = 251999;
    static const int DEG_MAX = 10;
    static constexpr int DEG[] = { 10, 3, 0 };
    static constexpr int LEN[] = { 30, 100, 0 };
    static constexpr int POS[] = {
        2510,  12817, 11890, 13009, 5343,  1775,  10496, 13302, 13348, 17880, 6766,
        16330, 2412,  7944,  2483,  7602,  12482, 6942,  3070,  9231,  16410, 1766,
        1240,  10046, 12091, 14475, 7003,  202,   7733,  11237, 15562, 4695,  13931,
        17100, 11102, 770,   3848,  4216,  7132,  10929, 16469, 17153, 8177,  8723,
        12861, 15948, 2251,  1500,  11526, 8590,  14813, 3505,  12654, 1079,  11736,
        6290,  2299,  17073, 6330,  5997,  390,   16492, 13989, 1320,  14600, 7061,
        6583,  458,   894,   1596,  8625,  7644,  1322,  16647, 15763, 10439, 8740,
        5529,  2969,  13893, 13425, 13121, 5344,  8739,  4953,  7654,  17848, 9334,
        9533,  2731,  12506, 10992, 8762,  5395,  6424,  11688, 3193,  17601, 14679,
        8204,  5466,  15487, 1642,  6671,  13557, 4074,  7182,  4436,  12398, 12973,
        1958,  13041, 6579,  15984, 3762,  16633, 6113,  11509, 7227,  28,    17202,
        4813,  14024, 15099, 2648,  4476,  2260,  6507,  9930,  9232,  14186, 14510,
        6818,  7665,  12708, 2645,  16687, 13255, 8239,  15884, 1751,  7847,  17987,
        11410, 3345,  17133, 17655, 5027,  1261,  17191, 8056,  4264,  13915, 8217,
        6118,  8072,  6278,  6835,  5038,  15008, 13625, 2999,  5336,  11687, 13500,
        5723,  13903, 766,   6293,  155,   12316, 14093, 7372,  16846, 15357, 9865,
        17869, 1429,  16681, 202,   15062, 1123,  6454,  17625, 3213,  39,    1669,
        1770,  13636, 16555, 13053, 7597,  11481, 1336,  3343,  11387, 5463,  17830,
        13741, 5976,  1956,  13509, 1664,  16867, 8168,  13421, 17078, 3285,  17138,
        1572,  16711, 1499,  4805,  13584, 14759, 2844,  13110, 7356,  5850,  8330,
        6521,  8528,  14170, 6681,  16992, 12867, 14326, 15227, 4082,  8595,  16176,
        8184,  8572,  1923,  935,   8900,  13020, 6812,  9778,  3391,  3946,  4711,
        15314, 15108, 15634, 4144,  4372,  9207,  10715, 1291,  16601, 5864,  10968,
        4724,  9235,  6988,  3307,  6515,  7004,  16328, 16217, 4227,  9735,  15857,
        5003,  2532,  4451,  8574,  2149,  6908,  9506,  8949,  12035, 9701,  3124,
        14295, 8567,  13614, 5159,  16746, 2418,  8669,  10921, 5738,  147,   1004,
        2692,  9065,  12877, 7559,  16706, 8511,  10314, 3118,  1219,  7071,  12376,
        538,   2389,  3297,  12492, 10589, 5791,  13528, 1653,  6618,  10485, 1307,
        4102,  347,   13580, 4039,  523,   10311, 10540, 4183,  6192,  17159, 11458,
        6521,  9632,  11594, 15791, 10384, 11654, 126,   11715, 6265,  34,    5091,
        7271,  13900, 7588,  3960,  11297, 1612,  9857,  4695,  16399, 6423,  2197,
        15040, 4219,  5979,  13959, 2959,  578,   8404,  4585,  658,   6474,  15900,
        11357, 5249,  7414,  8642,  1151,  4130,  9064,  14537, 14517, 1356,  3748,
        13865, 12085, 17295, 9530,  5110,  1570,  10862, 8458,  15322, 16355, 1774,
        5270,  1229,  11587, 1632,  17039, 787,   4703,  11423, 15388, 6136,  8413,
        9703,  13946, 4678,  4072,  16702, 6244,  4690,  7164,  7238,  14169, 5398,
        8679,  122,   11593, 10954, 15802, 16427, 9413,  6717,  16406, 1027,  17863,
        7836,  655,   8827,  10286, 4124,  12599, 12482, 12955, 3121,  15318, 8343,
        16634, 6301,  13568, 5056,  9920,  1948,  10,    17395, 8550,  131,   2151,
        15226, 15994, 13093, 10966, 15412, 2781,  13425, 15831, 5346,  2261,  1067,
        6346,  6625,  1966,  13533, 10575, 4483,  5761,  14366, 2019,  14426, 16746,
        1450,  4830,  13109, 7358,  7942,  15376, 7284,  14035, 14341, 12625, 3306,
        9375,  7529,  1537,  13831, 13447, 4549,  15658, 15299, 8238,  4005,  13264,
        9766,  4715,  6285,  15383, 1262,  12883, 15434, 11123, 14975, 3434,  5307,
        1112,  16967, 12163, 12009, 3681,  9174,  13153, 10344, 13456, 13197, 9562,
        1785,  7549,  15347, 663,   9748,  9436,  4961,  11903, 11574, 16248, 6238,
        666,   11426, 13748, 14763, 14431, 1443,  2069,  2376,  8154,  14978, 13140,
        1289,  9046,  1159,  300,   3319,  11510, 7769,  15877, 6430,  14946, 6856,
        8868,  15622, 12458, 4867,  6622,  6850,  14721, 11241, 12760, 14233, 9874,
        17682, 16677, 13195, 15086, 11155, 7067,  14160, 12741, 14379, 8922,  1930,
        17055, 11752, 12361, 6523,  9568,  12165, 5636,  16011, 11389, 4754,  9916,
        15903, 15542, 8301,  12073, 4918,  9754,  16544, 17907, 14814, 10839, 1401,
        5107,  12320, 1095,  8592,  15088, 6521,  12015, 14802, 3901,  8920,  17932,
        2990,  1643,  5102,  3870,  2045,  540,   2643,  2287,  5844,  2482,  9471,
        10428, 637,   3629,  8814,  7277,  2678
    };
};

struct DVB_S2X_TABLE_B10 {
    static const int M = 360;
    static const int N = 64800;
    static const int K = 50400;
    static const int LINKS_MIN_CN = 17;
    static const int LINKS_MAX_CN = 18;
    static const int LINKS_TOTAL = 259199;
    static const int DEG_MAX = 12;
    static constexpr int DEG[] = { 12, 5, 3, 0 };
    static constexpr int LEN[] = { 20, 20, 100, 0 };
    static constexpr int POS[] = {
        13057, 12620, 2789,  3553,  6763,  8329,  3333,  7822,  10490, 13943, 4101,
        2556,  658,   11386, 2242,  7249,  5935,  2148,  5291,  11992, 3222,  2957,
        6454,  3343,  93,    1205,  12706, 11406, 9017,  7834,  5358,  13700, 14295,
        4152,  6287,  4249,  6958,  2768,  8087,  1759,  11889, 4474,  3925,  4004,
        14392, 8923,  6962,  4822,  6719,  5436,  1905,  10228, 5059,  4892,  12448,
        26,    12891, 10607, 12210, 10424, 8368,  10667, 9045,  7694,  13097, 3555,
        4831,  411,   8539,  6527,  12753, 11530, 4960,  6647,  13969, 3556,  9997,
        7898,  2134,  9931,  3749,  4305,  11242, 10410, 9125,  9075,  9916,  12370,
        8720,  6056,  8128,  5425,  979,   3421,  5660,  9473,  4348,  11979, 5985,
        395,   11255, 13878, 7797,  4962,  13519, 13323, 7596,  5520,  2852,  8519,
        3022,  9432,  3564,  9467,  8569,  12235, 11837, 5031,  4246,  2,     4081,
        3630,  1619,  2525,  3773,  11491, 14076, 9834,  3618,  2008,  4694,  6948,
        7684,  9642,  5970,  1679,  13207, 12368, 262,   7401,  11471, 2861,  5620,
        4754,  7474,  10418, 1422,  10960, 13852, 988,   13465, 6415,  86,    2432,
        7595,  12239, 8539,  11749, 8794,  6350,  1947,  13325, 13061, 7385,  13017,
        2536,  13121, 15,    7944,  13831, 5126,  9938,  11758, 335,   980,   9736,
        12143, 5753,  4533,  10814, 10706, 12618, 6949,  2684,  4107,  14388, 11372,
        6321,  13832, 9190,  2838,  13860, 10830, 1947,  13803, 3257,  2677,  406,
        8400,  10536, 12911, 3629,  251,   9784,  13343, 13304, 301,   801,   6456,
        6351,  6155,  6763,  3812,  11337, 8446,  9306,  524,   5573,  503,   10544,
        8990,  673,   2309,  12376, 466,   11441, 960,   1557,  4403,  3564,  1732,
        13453, 12054, 8941,  1383,  12424, 4347,  9830,  3553,  5158,  2025,  4282,
        4983,  13553, 10776, 11833, 13099, 5078,  4420,  3527,  1544,  7474,  2780,
        7749,  4153,  11189, 520,   8463,  12230, 7712,  10409, 13367, 2604,  2966,
        9248,  1412,  420,   3507,  9818,  7955,  1122,  12483, 9375,  10232, 9456,
        2799,  7033,  10404, 4495,  12059, 2569,  5970,  6262,  2199,  8045,  11724,
        511,   12693, 12855, 9597,  756,   12900, 13391, 13623, 10683, 2095,  13479,
        1488,  9469,  11142, 13849, 1356,  10776, 3530,  9866,  13449, 14225, 2072,
        12772, 9461,  6466,  6181,  6502,  401,   7439,  4631,  1086,  3062,  11789,
        11811, 6788,  14007, 2270,  14132, 2764,  4643,  10272, 11316, 2608,  8511,
        5221,  9028,  2736,  7223,  1051,  1974,  2737,  6739,  13904, 6156,  5,
        9082,  3915,  2400,  7195,  3413,  606,   221,   8171,  4548,  1267,  5310,
        12795, 2160,  8305,  10563, 3507,  12190, 6325,  2499,  9717,  9251,  6046,
        13308, 11704, 10834, 11241, 4777,  3774,  11533, 12487, 10365, 6852,  58,
        2650,  2027,  7248,  13704, 5573,  12777, 7834,  8561,  7906,  8121,  7774,
        554,   3105,  6000,  11198, 3586,  10410, 9002,  4094,  11297, 12058, 1037,
        13638, 1258,  12917, 11078, 2430,  51,    10276, 7841,  9451,  10236, 11045,
        1058,  10352, 9629,  9428,  86,    8146,  1255,  3802,  10820, 6337,  4199,
        9364,  7723,  1139,  438,   6445,  583,   2683,  5358,  10730, 8471,  3061,
        13380, 3005,  2840,  4754,  8210,  1814,  11502, 8667,  14258, 5985,  8407,
        13336, 10970, 6363,  11715, 5053,  104,   13618, 13817, 6562,  4087,  294,
        1742,  10528, 4626,  6607,  2692,  1587,  11097, 8361,  2788,  13451, 3541,
        823,   4060,  13604, 9816,  157,   6106,  1062,  8853,  5159,  4270,  9352,
        13164, 2919,  7526,  5174,  12501, 12634, 13077, 5129,  5750,  1568,  6281,
        269,   5985,  10973, 8518,  9415,  1028,  4722,  13275, 634,   12113, 7104,
        7436,  12787, 1032,  5936,  3425,  11526, 10797, 784,   9208,  15,    11223,
        12849, 4913,  10635, 3553,  8852,  11749, 10619, 3532,  4080,  9831,  9219,
        6560,  6049,  6111,  1304,  11770, 12585, 13209, 8589,  11287, 2887,  10699,
        14307, 4752,  456,   4073,  1175,  13156, 4894,  12756, 3237,  6279,  10125,
        7074,  2344,  7533,  7103,  5226,  4000,  4425,  12173, 10056, 5312,  1599,
        7445,  8696,  12533, 11509, 14050, 2483,  12405, 2876,  5033,  4512,  4955,
        5627,  5572,  5099,  10987, 10665, 404,   3082,  2075,  1583,  13454, 5666,
        7228,  524,   13290, 7634,  418,   9006,  7368,  4181,  9447,  3674,  8171,
        9355,  10211, 9342,  12572, 3681,  3322,  3295,  186,   7491,  7926,  212,
        5241,  5479,  1654,  8097,  5078,  423,   4817,  1357,  12780, 3664,  11900,
        402,   13108, 299,   7166,  12008, 5750,  3041,  5618,  8357,  1229,  8884,
        3713,  8791,  13375, 4390,  6302,  568,   1009,  4440,  10003, 1209,  11978,
        11711, 1803,  9838,  13537, 11318, 9750,  12421, 2388,  3021,  7880,  7220,
        1062,  6871
    };
};

struct DVB_S2X_TABLE_B11 {
    static const int M = 360;
    static const int N = 64800;
    static const int K = 32400;
    static const int LINKS_MIN_CN = 6;
    static const int LINKS_MAX_CN = 8;
    static const int LINKS_TOTAL = 255599;
    static const int DEG_MAX = 18;
    static constexpr int DEG[] = { 18, 3, 16, 9, 6, 0 };
    static constexpr int LEN[] = { 10, 65, 5, 5, 5, 0 };
    static constexpr int POS[] = {
        708,   1132,  2120,  3208,  3879,  8320,  11948, 14185, 15214, 16594, 17849,
        19766, 23814, 26175, 27579, 28052, 31512, 32029, 2720,  2753,  3716,  6133,
        8020,  8305,  9429,  10337, 15503, 19905, 20127, 21963, 25624, 27221, 27907,
        27945, 29833, 30270, 4011,  7807,  11547, 12782, 13040, 14599, 14836, 15218,
        17890, 18922, 19668, 20267, 20714, 22151, 24373, 25261, 26101, 27627, 136,
        5341,  7661,  12779, 13392, 13922, 14151, 15054, 16544, 17232, 17478, 19895,
        22814, 23820, 25014, 26346, 27575, 31803, 3456,  3485,  5839,  8312,  8423,
        9796,  10018, 11520, 13336, 15520, 19928, 22019, 23144, 25339, 27406, 28729,
        29527, 31406, 1779,  3634,  3930,  4138,  5449,  5924,  6776,  7658,  8703,
        11542, 13133, 15086, 16334, 21876, 23860, 24281, 28854, 29557, 697,   868,
        1345,  6257,  7400,  8220,  9761,  11501, 15828, 16175, 16865, 17251, 19298,
        21907, 24033, 24175, 24497, 30965, 991,   1845,  3173,  5609,  11275, 12666,
        12903, 14409, 15359, 17537, 17923, 19821, 20323, 21561, 21663, 23378, 25371,
        28487, 446,   3096,  3604,  3688,  6864,  7296,  8128,  9957,  11568, 13204,
        14502, 16280, 17655, 19695, 25953, 28006, 31006, 31160, 3592,  5443,  5450,
        8875,  10529, 10721, 15241, 16485, 16905, 17980, 19685, 21639, 21938, 25038,
        25322, 26073, 27072, 32305, 2539,  11274, 18981, 8099,  17427, 18613, 7872,
        12547, 14776, 17272, 31146, 31476, 12171, 20651, 28060, 5845,  20532, 24021,
        2102,  9627,  12746, 4406,  13397, 16767, 7707,  19199, 20221, 10278, 11526,
        13739, 8902,  13337, 25524, 5385,  6939,  15968, 1686,  2985,  18124, 21285,
        22673, 25722, 4833,  4895,  7657,  14073, 19518, 27540, 2832,  27137, 32072,
        8936,  19641, 24786, 1696,  4408,  9480,  3941,  9228,  25043, 1328,  7460,
        25237, 11251, 21361, 23890, 10450, 10762, 26795, 1544,  19244, 22553, 9564,
        24279, 27073, 12214, 15608, 30892, 6316,  29252, 30504, 3667,  7784,  26600,
        11435, 20278, 31840, 7211,  21620, 23899, 17193, 18368, 23536, 3750,  18865,
        29121, 2088,  7648,  20893, 12231, 28534, 28933, 6316,  14450, 31885, 2672,
        8770,  26920, 17337, 18624, 26359, 3098,  17939, 27134, 1084,  24695, 31846,
        5110,  9148,  10203, 3943,  19212, 31745, 6,     6061,  29453, 2271,  9151,
        27015, 386,   2747,  26182, 13129, 15456, 30698, 126,   10222, 23935, 11008,
        17244, 19711, 17752, 22103, 31308, 11293, 20670, 23940, 11627, 14829, 19929,
        2163,  5918,  23666, 28627, 28709, 31369, 3161,  3209,  26227, 1597,  25322,
        30792, 2083,  15971, 16193, 4795,  10875, 11668, 12984, 28077, 28863, 1851,
        9750,  30222, 2252,  8660,  8984,  6764,  8375,  15896, 5074,  16399, 31725,
        11507, 15519, 30828, 3196,  7975,  17614, 477,   11889, 17748, 2420,  2852,
        25451, 3683,  4741,  6944,  8199,  8808,  13142, 14071, 15830, 17216, 18589,
        20284, 21652, 22542, 24994, 25719, 26187, 1534,  4620,  4899,  6461,  6737,
        9082,  10679, 11544, 16118, 20173, 20662, 21526, 22646, 24778, 29790, 30044,
        2343,  2547,  5620,  6523,  8188,  9029,  14162, 15517, 24143, 25078, 25163,
        26616, 28731, 30201, 30889, 32034, 1876,  4541,  5147,  9087,  12853, 12967,
        13887, 16009, 19722, 20475, 21245, 21908, 22547, 25790, 27330, 27640, 1706,
        3168,  6471,  7382,  10195, 11568, 11770, 17719, 19484, 19572, 20375, 20470,
        23332, 24372, 30654, 31230, 996,   3297,  3587,  4313,  12243, 12456, 17510,
        20492, 29071, 7114,  7312,  7937,  8379,  8580,  11514, 13657, 23774, 24569,
        98,    600,   745,   1223,  4298,  6362,  12544, 21620, 28786, 2585,  4021,
        10785, 11294, 20707, 25033, 25465, 26990, 30713, 1895,  4346,  10404, 16998,
        17073, 24131, 24891, 26056, 26444, 4265,  8641,  8937,  13462, 23815, 26205,
        1468,  2578,  3070,  6258,  8221,  10414, 5186,  8832,  11589, 25697, 29629,
        32022, 15971, 17493, 18659, 19082, 22089, 26779, 1597,  1691,  10499, 13815,
        18943, 27396
    };
};

struct DVB_S2X_TABLE_B12 {
    static const int M = 360;
    static const int N = 64800;
    static const int K = 34560;
    static const int LINKS_MIN_CN = 7;
    static const int LINKS_MAX_CN = 9;
    static const int LINKS_TOTAL = 266759;
    static const int DEG_MAX = 20;
    static constexpr int DEG[] = { 20, 14, 12, 3, 4, 3, 0 };
    static constexpr int LEN[] = { 10, 5, 5, 55, 15, 6, 0 };
    static constexpr int POS[] = {
        551,   1039,  1564,  1910,  3126,  4986,  5636,  5661,  7079,  9384,  9971,
        10460, 11259, 14150, 14389, 14568, 14681, 21772, 27818, 28671, 384,   1734,
        1993,  3890,  4594,  6655,  7483,  8508,  8573,  8720,  10388, 15541, 17306,
        18411, 18606, 19048, 19273, 21492, 21970, 29495, 1104,  2877,  10668, 11101,
        12647, 13994, 14598, 15653, 17265, 18435, 18848, 18949, 19209, 19312, 19414,
        19465, 24927, 26613, 28809, 28865, 1185,  6439,  6519,  7790,  8609,  8826,
        9934,  16363, 16596, 18088, 18757, 20318, 20446, 21123, 23938, 24235, 25120,
        25469, 26036, 28043, 53,    3630,  4384,  4619,  7805,  8822,  12208, 13312,
        14269, 16435, 17925, 18079, 18689, 19042, 21541, 22729, 26066, 27666, 28759,
        30107, 1926,  2549,  9816,  10544, 10980, 12468, 13026, 15658, 15670, 15975,
        17200, 22364, 22775, 23343, 24289, 24956, 26230, 28040, 28348, 29718, 1243,
        1673,  4181,  6080,  7829,  8259,  9294,  10556, 10905, 14071, 18080, 18203,
        18537, 19707, 24143, 24442, 25877, 27072, 29158, 29690, 1834,  2523,  5973,
        6006,  8054,  8843,  10141, 11668, 12956, 13202, 18659, 21757, 24258, 24675,
        24779, 25924, 26980, 27008, 29229, 29899, 3790,  5716,  7345,  7381,  9081,
        9679,  13629, 18038, 19858, 21248, 21348, 22251, 24410, 26790, 27643, 27955,
        27996, 28271, 29638, 30198, 158,   545,   1178,  5181,  8585,  9927,  10721,
        11361, 11640, 12552, 12579, 14641, 14928, 15609, 17388, 20551, 24516, 26834,
        29850, 30201, 1076,  3011,  5636,  6947,  7236,  7511,  10629, 16795, 20770,
        22796, 22853, 24219, 28516, 29151, 678,   2553,  3403,  6515,  7079,  8767,
        10228, 10791, 10832, 16113, 18718, 21328, 25762, 26925, 8536,  8706,  9471,
        9854,  11186, 12220, 13261, 14034, 14897, 25068, 26338, 26427, 28784, 29281,
        2634,  3562,  11652, 13206, 15185, 17051, 19666, 21058, 23107, 23869, 24590,
        25311, 25498, 28891, 2440,  4164,  7040,  7591,  9321,  9796,  11026, 12204,
        13478, 17852, 22183, 25257, 28756, 28813, 390,   2209,  3095,  4554,  5755,
        12285, 12314, 14372, 14957, 15711, 22946, 27713, 207,   418,   3856,  8719,
        11708, 15353, 20717, 21639, 23269, 26732, 27613, 28334, 2805,  3795,  7105,
        8130,  10330, 13888, 15132, 16415, 17093, 23277, 25191, 27630, 1381,  1955,
        3689,  6290,  6342,  9573,  13751, 14633, 16298, 18206, 24248, 24893, 5991,
        8976,  9763,  12308, 12566, 15265, 17068, 21084, 22475, 24371, 25171, 28008,
        8962,  17060, 22260, 1335,  6691,  14738, 4118,  10315, 23113, 4643,  10970,
        28091, 1195,  3683,  26231, 7486,  17403, 22471, 7328,  10110, 19764, 4630,
        13732, 28298, 6139,  19386, 26009, 19712, 20670, 27993, 9317,  18037, 19324,
        4422,  4510,  10290, 1396,  22324, 28601, 1404,  5708,  22352, 14783, 17214,
        19359, 7996,  20133, 20614, 6219,  17582, 24404, 2481,  20505, 28124, 4569,
        10863, 28776, 941,   7516,  11474, 24878, 27151, 28125, 9053,  10186, 28126,
        1376,  19327, 26055, 5965,  14239, 16875, 17434, 18098, 25044, 5785,  14385,
        22243, 15144, 16981, 25171, 13671, 25732, 25961, 95,    20461, 20558, 4321,
        19572, 26175, 3637,  17351, 18683, 18096, 23926, 27359, 7914,  13217, 23098,
        9822,  11342, 26728, 7591,  18615, 28044, 112,   16897, 19127, 10087, 18516,
        27292, 2762,  3323,  21677, 4533,  20728, 23071, 7164,  7180,  15097, 2061,
        6184,  20598, 6310,  13462, 26714, 8189,  9345,  15315, 3319,  17370, 24726,
        5217,  9271,  11984, 10245, 13623, 16621, 5537,  22325, 22692, 1592,  19859,
        25578, 7005,  15625, 22572, 1474,  14387, 28592, 153,   4254,  20080, 8709,
        25107, 25135, 11663, 17264, 25598, 7135,  17226, 18698, 109,   2603,  26360,
        1408,  9608,  11927, 14872, 4187,  10410, 27776, 30125, 1008,  4409,  14938,
        20458, 3641,  12480, 20141, 22605, 10453, 22378, 24993, 30002, 19957, 24800,
        25196, 29823, 2431,  2929,  5824,  12333, 395,   4393,  15571, 22019, 15040,
        24712, 28275, 28794, 3735,  11988, 13828, 13949, 4301,  5829,  24675, 26696,
        6406,  8140,  9438,  17274, 4272,  17638, 19278, 24961, 3271,  11030, 11481,
        28624, 3792,  5394,  7566,  17557, 6505,  11108, 20811, 2722,  28613, 28991,
        11472, 25911, 30170, 2355,  13553, 25490, 3284,  13373, 17330, 9046,  16513,
        22243
    };
};

struct DVB_S2X_TABLE_B13 {
    static const int M = 360;
    static const int N = 64800;
    static const int K = 36000;
    static const int LINKS_MIN_CN = 7;
    static const int LINKS_MAX_CN = 9;
    static const int LINKS_TOTAL = 255599;
    static const int DEG_MAX = 16;
    static constexpr int DEG[] = { 16, 3, 15, 10, 8, 3, 0 };
    static constexpr int LEN[] = { 10, 65, 5, 5, 5, 10, 0 };
    static constexpr int POS[] = {
        690,   1366,  2591,  2859,  4224,  5842,  7310,  8181,  12432, 15667, 15717,
        16935, 17583, 19696, 20573, 21269, 2488,  2890,  6630,  6892,  11563, 12518,
        15560, 16798, 18355, 18746, 19165, 19295, 21567, 23505, 23617, 23629, 321,
        2844,  2894,  3986,  4538,  7599,  7816,  9831,  10247, 11556, 16068, 17249,
        18194, 23043, 23100, 25938, 2503,  2827,  4771,  5929,  6400,  7437,  8054,
        10897, 11633, 14404, 16133, 17101, 24425, 24973, 25086, 25802, 1462,  2099,
        3910,  5131,  5352,  8832,  9495,  9624,  10796, 12906, 13903, 14724, 14946,
        17708, 21034, 26612, 260,   523,   1427,  3435,  4517,  9494,  12594, 12688,
        12726, 14163, 16537, 17424, 18424, 20321, 25101, 28269, 2131,  2407,  4820,
        7167,  11783, 15249, 15982, 18761, 22162, 24593, 24971, 25831, 26351, 27005,
        28348, 28793, 2089,  5829,  6119,  7505,  7758,  8122,  9870,  12107, 16656,
        17582, 19115, 23738, 27646, 27692, 27862, 28356, 2714,  3288,  3337,  5013,
        6210,  8080,  9348,  12919, 13458, 13621, 18015, 21024, 24044, 24761, 25610,
        26317, 1305,  3402,  5830,  7095,  8852,  9580,  9793,  11157, 12725, 14355,
        20659, 21400, 22289, 23823, 26250, 27006, 12936, 15702, 23593, 3616,  17219,
        18621, 1234,  12759, 26749, 396,   3017,  18360, 10664, 21597, 26165, 12986,
        14553, 24818, 18403, 21213, 28302, 6515,  18331, 19413, 19649, 26219, 27483,
        2538,  15793, 17528, 7871,  9374,  20785, 5494,  8084,  21558, 6691,  7770,
        14306, 3247,  7417,  18827, 11615, 15987, 20081, 1527,  15272, 26042, 10540,
        15548, 23849, 223,   2601,  25888, 2395,  21465, 28501, 19703, 21589, 27252,
        12832, 15726, 25300, 3750,  10030, 16124, 401,   6474,  28682, 4424,  19876,
        25563, 590,   12853, 14779, 25185, 25539, 25920, 6857,  23329, 25764, 3467,
        23205, 23751, 9278,  24364, 25033, 14956, 19104, 22487, 21856, 26163, 27130,
        2067,  17357, 22055, 50,    14414, 19142, 306,   445,   16437, 2260,  13892,
        17608, 8893,  12230, 16916, 5943,  8921,  16380, 5079,  15385, 21951, 5108,
        6038,  8513,  2126,  6749,  7330,  3814,  11941, 22949, 2301,  15416, 26731,
        3498,  14463, 20417, 2062,  10434, 10746, 18128, 18960, 23452, 13080, 13129,
        27193, 18818, 24995, 27087, 7198,  11948, 23135, 17206, 18524, 25811, 5202,
        10030, 10076, 8497,  23410, 23991, 1553,  1968,  13135, 4426,  10786, 23259,
        92,    7941,  23045, 6356,  14028, 23104, 18319, 20286, 22984, 5778,  25335,
        26191, 662,   15922, 27478, 2920,  9733,  18974, 15337, 27509, 27519, 8659,
        25028, 27723, 14865, 24564, 26361, 1383,  21234, 21770, 10767, 25752, 25843,
        7717,  14536, 24248, 278,   2803,  2966,  3547,  4128,  4829,  4981,  6699,
        6716,  14183, 14239, 15939, 16996, 19694, 20073, 3022,  3087,  10039, 10174,
        11403, 12146, 13689, 14934, 17765, 18121, 18936, 21818, 27202, 27532, 28192,
        817,   3888,  4102,  9441,  10165, 10941, 18131, 20028, 22305, 23832, 25225,
        26228, 27208, 27245, 27390, 6346,  7992,  9053,  11187, 12124, 16435, 16850,
        21269, 21580, 22096, 23700, 24751, 26264, 27318, 27576, 1440,  3291,  5755,
        12247, 12272, 15394, 15659, 15764, 16338, 17373, 18840, 19597, 19812, 22415,
        27062, 937,   3118,  8745,  10933, 12703, 13906, 14113, 21442, 21539, 28140,
        247,   2465,  2918,  3189,  5886,  11451, 16862, 17458, 20908, 26608, 58,
        10104, 11815, 14429, 16531, 19797, 24071, 26021, 28000, 28489, 4367,  5710,
        7855,  14203, 18071, 19336, 19880, 20166, 26774, 28554, 191,   1085,  4068,
        7452,  11739, 15962, 17501, 19172, 24130, 28476, 4961,  19716, 19964, 23479,
        24004, 24340, 25537, 27930, 1688,  2235,  10464, 15112, 15134, 25143, 25910,
        28689, 765,   11839, 17427, 19754, 21445, 22034, 23493, 25296, 277,   7947,
        9952,  12228, 12595, 16563, 19758, 21721, 1575,  2652,  5226,  8159,  16624,
        25446, 26417, 26722, 10571, 17389, 22602, 1331,  7875,  18475, 11738, 13853,
        23914, 9412,  11361, 26507, 16877, 23022, 27060, 2627,  16649, 22369, 9446,
        14752, 28540, 4496,  7705,  22247, 2439,  19741, 28550, 6605,  12623, 26774
    };
};

struct DVB_S2X_TABLE_B14 {
    static const int M = 360;
    static const int N = 64800;
    static const int K = 37440;
    static const int LINKS_MIN_CN = 8;
    static const int LINKS_MAX_CN = 10;
    static const int LINKS_TOTAL = 271439;
    static const int DEG_MAX = 18;
    static constexpr int DEG[] = { 18, 14, 3, 7, 4, 3, 0 };
    static constexpr int LEN[] = { 10, 10, 55, 5, 10, 14, 0 };
    static constexpr int POS[] = {
        2087,  6318,  7314,  8327,  9453,  12989, 13156, 13763, 13819, 16963, 18495,
        19352, 20510, 20651, 23379, 23847, 23953, 26469, 2680,  5652,  6816,  7854,
        10673, 11431, 12379, 14570, 17081, 19341, 20749, 21056, 22990, 23012, 24902,
        25547, 26718, 27284, 2142,  3940,  4724,  4791,  6617,  6800,  9349,  9380,
        10073, 10147, 11750, 12900, 16044, 16156, 17769, 21600, 21669, 22554, 1588,
        3097,  4277,  6181,  6737,  8974,  9793,  12215, 12814, 17953, 18270, 21808,
        22625, 24390, 25429, 25750, 25967, 26391, 561,   5825,  7106,  7166,  7475,
        11844, 12905, 13559, 13978, 14176, 14437, 16070, 16587, 19792, 20187, 23754,
        26070, 27232, 673,   1783,  4046,  4887,  5596,  8390,  9229,  12315, 14252,
        14415, 14529, 17837, 20013, 20032, 22201, 22487, 24412, 25792, 1261,  1910,
        3767,  6244,  7050,  7367,  9230,  12972, 13229, 13472, 14287, 14494, 16776,
        20523, 20738, 21591, 23622, 25206, 1618,  2106,  3640,  6304,  7984,  8158,
        9072,  9311,  12618, 15746, 16985, 18923, 20959, 21267, 23375, 24052, 24260,
        24827, 6256,  6931,  7276,  7356,  7832,  12284, 12405, 13083, 13602, 14750,
        19021, 20026, 22661, 23283, 24427, 25301, 25982, 27279, 2432,  3076,  3399,
        5305,  7370,  8406,  8826,  9237,  10537, 15492, 15606, 15619, 16515, 17562,
        19550, 22525, 24389, 25740, 157,   296,   422,   467,   7125,  9849,  9997,
        15376, 15506, 16119, 17153, 17857, 18639, 23136, 1275,  1439,  6162,  8258,
        9031,  10207, 10472, 16004, 16641, 17140, 21342, 22191, 23200, 25753, 110,
        1073,  6460,  9208,  10520, 15833, 15951, 17494, 18614, 19970, 20537, 21512,
        21796, 22135, 3771,  5399,  5885,  7905,  8302,  8614,  10205, 11133, 11459,
        16044, 22701, 25170, 26255, 27086, 1597,  2640,  2741,  3790,  5107,  7470,
        9160,  12078, 12350, 14020, 18877, 19507, 22658, 24290, 4957,  5961,  6263,
        8201,  8579,  9392,  10133, 11712, 14757, 15678, 15718, 19528, 25107, 25122,
        870,   4508,  5944,  7360,  11724, 15003, 16387, 19543, 19893, 20189, 21942,
        23740, 25686, 25849, 131,   2044,  6731,  7619,  7787,  9109,  9841,  10006,
        10275, 13687, 16522, 18212, 24457, 25197, 504,   1863,  4246,  5075,  5448,
        6296,  6930,  11792, 13736, 14588, 16340, 17102, 17807, 26621, 1137,  1168,
        2366,  3818,  4311,  6806,  8583,  10850, 12198, 12357, 21357, 23243, 23568,
        25003, 2353,  11886, 22548, 1680,  9112,  12175, 15126, 16642, 27030, 5571,
        5719,  19190, 6232,  13413, 19728, 8197,  12068, 17122, 3220,  3476,  24534,
        1630,  4345,  23890, 19815, 20676, 24443, 12761, 14080, 15937, 41,    7963,
        23895, 7658,  13020, 27128, 1017,  1447,  3285,  2268,  22921, 26255, 261,
        13889, 14175, 13925, 18777, 18987, 15136, 24523, 27156, 12008, 18484, 19299,
        4304,  9857,  15134, 2966,  9278,  9737,  5469,  15449, 22259, 11359, 14186,
        20635, 16453, 21262, 23629, 5613,  7100,  11104, 3959,  14714, 18116, 7465,
        13803, 24660, 3939,  7615,  9891,  12249, 16491, 22373, 8734,  14253, 25616,
        5781,  18719, 23894, 6208,  6703,  14626, 1284,  4730,  23920, 3920,  13167,
        13366, 3925,  7147,  27268, 1926,  12777, 21092, 675,   8186,  22557, 487,
        9590,  12433, 7090,  16031, 27037, 3083,  10445, 22950, 380,   4663,  7195,
        960,   12754, 20597, 1790,  12476, 24250, 11307, 22121, 22266, 3256,  7625,
        12046, 11034, 11800, 17383, 6142,  14781, 19944, 2679,  11106, 22783, 7769,
        11060, 15178, 7384,  9851,  20205, 14813, 19271, 22600, 3085,  11637, 19934,
        6518,  7995,  19382, 11070, 15498, 26380, 248,   16291, 23824, 4989,  19436,
        26642, 5954,  16039, 16042, 20349, 21326, 24656, 25427, 2558,  6628,  9167,
        16825, 19069, 20808, 22617, 317,   13859, 14069, 16104, 18835, 20040, 26633,
        2866,  4153,  5875,  11698, 15287, 19719, 25808, 536,   6955,  9735,  16098,
        20694, 24675, 26881, 25,    7316,  9961,  21037, 7823,  19458, 20404, 25186,
        7142,  11057, 17748, 24788, 11315, 12358, 21583, 21836, 8995,  9326,  12826,
        25981, 2281,  10560, 10674, 19801, 5001,  6655,  26231, 26542, 800,   15131,
        18482, 22621, 9060,  12257, 24786, 25188, 3462,  17201, 18960, 24462, 17631,
        26360, 26425, 12774, 20967, 21391, 14701, 20696, 26807, 5931,  13144, 14022,
        128,   16460, 26300, 801,   9487,  25937, 6153,  11296, 23054, 2749,  14434,
        20049, 1732,  7646,  20402, 3839,  11031, 26022, 2159,  20918, 21407, 285,
        13785, 24234, 1977,  3899,  7972,  4120,  19101, 23719
    };
};

struct DVB_S2X_TABLE_B15 {
    static const int M = 360;
    static const int N = 64800;
    static const int K = 41760;
    static const int LINKS_MIN_CN = 10;
    static const int LINKS_MAX_CN = 12;
    static const int LINKS_TOTAL = 270359;
    static const int DEG_MAX = 18;
    static constexpr int DEG[] = { 18, 12, 10, 3, 10, 4, 3, 0 };
    static constexpr int LEN[] = { 10, 5, 5, 55, 5, 10, 26, 0 };
    static constexpr int POS[] = {
        3880,  4377,  6147,  6219,  7873,  8180,  9157,  10311, 10862, 15393, 16522,
        17318, 17609, 18398, 19290, 19293, 20296, 22244, 1056,  1647,  5119,  5201,
        6991,  10038, 10843, 11614, 11901, 12026, 14631, 16749, 16772, 16915, 17331,
        19235, 19877, 22763, 501,   2634,  2812,  3085,  3242,  4952,  5087,  8334,
        8838,  8993,  12601, 12849, 13142, 13852, 14416, 14444, 15122, 20692, 343,
        1183,  5708,  6798,  6951,  9154,  9160,  9508,  9884,  11874, 11984, 13737,
        14933, 17208, 21253, 21822, 22723, 22898, 3332,  4384,  5137,  8527,  8749,
        10414, 10536, 12759, 14769, 16121, 19255, 19326, 20283, 20352, 20629, 20827,
        21226, 22087, 60,    3866,  3895,  4116,  5631,  6985,  7205,  7681,  10031,
        12825, 14266, 14644, 16396, 17010, 20221, 20268, 21729, 21752, 61,    1112,
        1392,  1826,  1910,  4370,  5910,  6660,  6943,  7859,  9628,  10213, 10701,
        12615, 14453, 17123, 18667, 20688, 880,   2397,  2669,  7767,  9683,  9705,
        10430, 13995, 15972, 16217, 17187, 18246, 18869, 21077, 21884, 21897, 21927,
        22475, 748,   1029,  1446,  2912,  6784,  6926,  7710,  11674, 12014, 12409,
        12438, 14411, 14723, 15953, 16020, 17496, 18230, 19547, 1151,  2295,  2975,
        3082,  6502,  8269,  9130,  9629,  10018, 10235, 14871, 15834, 17396, 17777,
        19138, 21871, 22035, 22927, 650,   789,   4632,  4777,  5004,  8796,  13479,
        14917, 16826, 16926, 19144, 20754, 1693,  4906,  5777,  5907,  6472,  9792,
        11824, 16134, 16406, 16440, 18395, 22338, 5172,  5920,  7987,  9381,  10573,
        11382, 11512, 13074, 15755, 16591, 19518, 20968, 1409,  2508,  6542,  8993,
        10660, 13691, 14724, 15597, 19641, 20809, 21160, 22767, 895,   1446,  3298,
        4018,  5250,  6269,  8897,  9049,  12052, 15311, 16199, 20677, 1,     774,
        1248,  2362,  7019,  8430,  14321, 14444, 19664, 21475, 1714,  1973,  4155,
        7536,  7975,  9323,  9997,  10627, 20959, 21824, 586,   1907,  2153,  5914,
        7407,  8311,  8900,  10060, 18502, 18818, 805,   1897,  3019,  7404,  10055,
        11779, 11982, 15319, 21802, 21913, 5276,  5470,  8725,  11080, 11939, 17057,
        17960, 18930, 19814, 22546, 1227,  10140, 18999, 849,   17266, 18364, 4436,
        6167,  14942, 11103, 14219, 19204, 6738,  10043, 20614, 1885,  3173,  13934,
        2088,  11344, 20627, 2668,  6722,  20336, 11274, 18439, 21280, 2223,  15960,
        21282, 6555,  7521,  11051, 9037,  11912, 22911, 12952, 19885, 21298, 13696,
        16793, 17228, 1040,  4501,  6170,  1025,  4522,  21287, 1213,  3817,  12857,
        1392,  6601,  12468, 835,   16504, 19633, 634,   16014, 19619, 6166,  17343,
        21067, 6583,  16107, 18382, 5481,  9653,  18543, 14634, 15406, 16179, 1952,
        7810,  16892, 2271,  12635, 20456, 8838,  10469, 20629, 11400, 16788, 18756,
        230,   11373, 17104, 17204, 17733, 20707, 8465,  13092, 22087, 8684,  8983,
        10130, 11468, 13469, 21366, 9342,  10115, 19130, 3184,  9535,  11802, 13495,
        16231, 19609, 8911,  12617, 15190, 508,   8674,  19422, 4059,  6197,  8449,
        9440,  11028, 13468, 1779,  9358,  13459, 46,    7370,  15160, 12118, 17458,
        21853, 320,   4449,  20048, 12300, 14502, 21803, 9019,  19417, 22280, 1320,
        6434,  7916,  6850,  10275, 17099, 301,   5637,  7309,  8443,  13673, 16625,
        4943,  15268, 20252, 13246, 17809, 18271, 3230,  8329,  12330, 1398,  7959,
        18145, 274,   10500, 12954, 1326,  2057,  5453,  6588,  11514, 11920, 13687,
        14692, 17684, 22043, 3921,  7217,  8693,  10943, 11769, 12121, 12618, 19781,
        19932, 20083, 2166,  5206,  5482,  11453, 13986, 16877, 18184, 18822, 21663,
        22611, 858,   11727, 13116, 14705, 15517, 16109, 17086, 18439, 19047, 20321,
        216,   414,   726,   2616,  6948,  7028,  8288,  12164, 21697, 22606, 7441,
        14498, 15308, 17321, 1455,  6627,  10112, 13652, 7448,  7945,  17043, 21758,
        2947,  7933,  11624, 14237, 514,   4014,  20406, 22226, 4454,  9815,  11696,
        13946, 7787,  11797, 13113, 15796, 2363,  4379,  21733, 22277, 8437,  16504,
        16527, 21350, 8932,  14444, 15680, 19635, 1273,  11365, 15443, 3533,  11221,
        13249, 687,   1927,  14403, 3914,  4221,  8791,  12479, 15622, 17384, 14928,
        20923, 22283, 7729,  13750, 15716, 88,    12409, 19522, 6852,  16166, 21884,
        1204,  12049, 16487, 11178, 11226, 15971, 6382,  14361, 16863, 10195, 10247,
        18188, 1819,  5834,  8434,  286,   3333,  21431, 13950, 15188, 17771, 10198,
        14887, 16751, 13811, 18307, 18337, 1210,  18076, 21869, 5717,  8482,  11896,
        6501,  15625, 17792, 3965,  4494,  20272, 1589,  9900,  14472, 288,   9421,
        12009, 2177,  4626,  16605, 710,   4696,  18127
    };
};

struct DVB_S2X_TABLE_B16 {
    static const int M = 360;
    static const int N = 64800;
    static const int K = 44640;
    static const int LINKS_MIN_CN = 12;
    static const int LINKS_MAX_CN = 14;
    static const int LINKS_TOTAL = 273239;
    static const int DEG_MAX = 16;
    static constexpr int DEG[] = { 16, 3, 13, 12, 3, 0 };
    static constexpr int LEN[] = { 10, 65, 10, 5, 34, 0 };
    static constexpr int POS[] = {
        1083,  2862,  3815,  4075,  5519,  8003,  9308,  10029, 12476, 12949, 13759,
        13918, 14303, 15028, 19737, 19953, 392,   3781,  6086,  8378,  9952,  10531,
        11369, 11954, 14808, 14948, 16585, 16682, 18445, 18960, 19085, 19423, 3023,
        3727,  4797,  5104,  5342,  5994,  8138,  9758,  10146, 11758, 14763, 15300,
        15640, 17947, 18690, 18864, 854,   1259,  2147,  3861,  4258,  4949,  5555,
        5940,  9454,  14940, 15521, 16393, 17029, 18789, 18810, 19840, 4404,  6608,
        7232,  7534,  7721,  8079,  8558,  9851,  11560, 11968, 12678, 13410, 15908,
        16918, 18108, 18437, 519,   1591,  1600,  1964,  7706,  9481,  10789, 11068,
        13056, 13373, 13759, 14323, 14999, 15505, 17366, 18254, 545,   673,   2257,
        4060,  4289,  4897,  5287,  7318,  8511,  13835, 14540, 14948, 15475, 16718,
        17907, 18067, 1949,  3426,  3440,  4679,  5103,  8692,  8987,  10075, 10923,
        11162, 11625, 12805, 13749, 17487, 17807, 18802, 858,   1969,  2178,  2421,
        2592,  2764,  3504,  7084,  9227,  9349,  9960,  10592, 18149, 18974, 19010,
        19891, 3282,  5061,  5908,  6929,  7551,  7927,  8116,  8388,  11305, 11379,
        12527, 13982, 14343, 15064, 16259, 19602, 3730,  8198,  8789,  1515,  6545,
        9678,  12411, 14800, 17119, 1000,  15382, 18607, 977,   1525,  5376,  4464,
        7676,  8937,  3684,  6730,  9836,  10203, 10305, 18629, 2214,  4904,  10873,
        690,   7077,  12623, 3094,  11228, 16285, 2583,  5278,  16500, 4253,  13495,
        14465, 3323,  17768, 19548, 7670,  12892, 18704, 373,   14868, 16337, 8886,
        17314, 17578, 10636, 12385, 19530, 5734,  14030, 18619, 3298,  4905,  10156,
        332,   19282, 19924, 15,    8741,  16429, 11482, 14807, 15426, 6055,  12144,
        14026, 1095,  5737,  10525, 813,   965,   4520,  808,   8546,  14057, 3195,
        3814,  14683, 1184,  17287, 19477, 12411, 13207, 18549, 2639,  12198, 15656,
        3527,  5555,  14387, 5563,  10402, 19122, 4538,  13134, 18766, 731,   3368,
        5865,  1253,  2238,  8820,  2764,  11942, 16705, 6375,  18789, 19594, 3387,
        11299, 14192, 2486,  2729,  8580,  3096,  5778,  10416, 2513,  10609, 14018,
        2508,  10361, 15415, 5368,  6612,  17415, 1998,  5687,  17627, 2711,  16277,
        17350, 5213,  5820,  9217,  5744,  17794, 19180, 9095,  15302, 19441, 10031,
        12094, 18856, 739,   6709,  11785, 1496,  10418, 15753, 9437,  11589, 19552,
        7484,  9656,  12381, 2371,  7237,  7794,  748,   7213,  9835,  1930,  6418,
        8683,  5482,  15289, 18623, 10791, 15731, 18781, 3622,  5730,  14230, 1169,
        9420,  19665, 10170, 13288, 14142, 3855,  7239,  18843, 816,   16956, 19454,
        3179,  5689,  16584, 4313,  6450,  8761,  11594, 13187, 14029, 14509, 14944,
        16947, 17850, 18270, 18390, 19934, 1680,  2214,  3859,  3994,  4276,  6984,
        12261, 13869, 14696, 16303, 16467, 16756, 19754, 433,   1009,  3169,  6825,
        7128,  7294,  7327,  8175,  16653, 16657, 17314, 18598, 19472, 1473,  2110,
        2777,  5217,  5902,  7136,  7797,  8650,  9116,  11267, 14270, 15342, 18291,
        349,   2892,  4148,  7493,  10142, 13920, 14079, 14423, 15229, 16255, 16808,
        18248, 18362, 5879,  7078,  7457,  9493,  10771, 11010, 12068, 12994, 13007,
        13109, 17983, 19531, 20087, 483,   804,   993,   1078,  1822,  4646,  4658,
        5458,  8116,  8443,  10056, 13440, 18939, 490,   865,   1309,  4339,  6434,
        8210,  9248,  10588, 13094, 16476, 17620, 19378, 19708, 163,   899,   2396,
        4212,  6157,  9036,  11116, 13295, 13928, 15111, 16312, 18369, 19470, 985,
        1298,  3213,  5145,  6917,  7136,  7183,  10870, 11329, 12295, 13466, 14989,
        17909, 89,    582,   812,   1761,  5157,  6039,  7843,  8418,  8747,  11575,
        13169, 14160, 1871,  2701,  3252,  7399,  7646,  9785,  11274, 17041, 17361,
        18899, 19430, 19691, 1328,  2165,  2722,  4120,  4132,  9855,  10802, 14441,
        16771, 17679, 18611, 18718, 1166,  3128,  8585,  9843,  10411, 12365, 14141,
        15156, 16987, 17484, 17702, 19204, 943,   952,   4108,  4832,  6706,  9245,
        14304, 16528, 17055, 17698, 18419, 19526, 1340,  7429,  17768, 10358, 12400,
        16483, 1070,  4760,  10051, 6992,  8645,  9886,  756,   7962,  17532, 13063,
        17794, 18323, 630,   9881,  20052, 5786,  7779,  15441, 5049,  5860,  16575,
        10021, 13811, 20097, 2167,  6374,  19993, 1412,  4441,  11765, 14750, 17242,
        18319, 507,   1756,  18791, 2277,  6901,  9690,  14828, 15959, 16658, 4687,
        6452,  16770, 465,   11415, 13696, 13370, 15379, 16190, 2988,  12683, 16796,
        6382,  14227, 14295, 17221, 18167, 18379, 9656,  9841,  10968, 16917, 19014,
        19869, 15255, 15400, 17505, 6403,  15345, 16248, 6794,  15772, 18005, 3252,
        12230, 12246, 9062,  9082,  10245, 405,   9373,  19195, 5987,  6006,  6026,
        2865,  2887,  2896,  14889, 14898, 14924, 7791,  7800,  7809
    };
};

struct DVB_S2X_TABLE_B17 {
    static const int M = 360;
    static const int N = 64800;
    static const int K = 46080;
    static const int LINKS_MIN_CN = 13;
    static const int LINKS_MAX_CN = 15;
    static const int LINKS_TOTAL = 271079;
    static const int DEG_MAX = 15;
    static constexpr int DEG[] = { 15, 12, 3, 12, 4, 3, 0 };
    static constexpr int LEN[] = { 10, 10, 55, 5, 10, 38, 0 };
    static constexpr int POS[] = {
        790,   1010,  1064,  2157,  2569,  3499,  4637,  4951,  6789,  8177,  9888,
        10800, 13254, 13829, 17946, 597,   693,   862,   900,   4750,  4897,  5410,
        5441,  6491,  8815,  11894, 13411, 13696, 14103, 18413, 903,   2779,  2996,
        6100,  7489,  7560,  8637,  8853,  10078, 11372, 12040, 15911, 16944, 17059,
        17771, 1761,  2084,  2099,  2232,  3114,  3120,  7062,  10527, 10823, 11945,
        13918, 16359, 17110, 17654, 18370, 677,   1080,  2329,  5100,  5106,  6261,
        6383,  10953, 11968, 12186, 13266, 14451, 16092, 17760, 17871, 1069,  3672,
        5304,  6102,  6907,  8087,  9477,  9654,  11581, 14650, 14808, 14920, 15397,
        16179, 18595, 327,   1161,  2624,  4494,  4516,  5555,  6928,  7455,  7959,
        8734,  8933,  9753,  10614, 16263, 17689, 1922,  1932,  6481,  7488,  7722,
        8836,  10326, 10633, 11184, 12555, 13485, 14155, 16373, 17486, 18331, 1056,
        1624,  1991,  3585,  6052,  7838,  10123, 11470, 14228, 15146, 16166, 16390,
        17630, 17679, 17774, 295,   3429,  3587,  4597,  5017,  5105,  5136,  5827,
        7308,  8266,  9632,  11612, 14879, 16167, 18491, 1523,  1615,  3368,  6253,
        8510,  9070,  10020, 10368, 10718, 11882, 12014, 15077, 421,   3234,  4290,
        4808,  4983,  9992,  12569, 13331, 14457, 15853, 15943, 18318, 583,   2081,
        4320,  6268,  6284,  9084,  9638,  10941, 13335, 15062, 17310, 17667, 573,
        5180,  5758,  5813,  9655,  9892,  10763, 11209, 11717, 14760, 14972, 16395,
        151,   1917,  4190,  5573,  5629,  6725,  9653,  9974,  10008, 11971, 15132,
        18170, 132,   1270,  3074,  7215,  7878,  8266,  11875, 12274, 13134, 15084,
        17120, 17556, 845,   2417,  2435,  5875,  7758,  7807,  12521, 13907, 16400,
        17778, 18260, 18370, 2848,  4714,  5924,  6507,  7595,  8422,  9281,  13140,
        13276, 14589, 15269, 15943, 278,   931,   1186,  3588,  4072,  6943,  8429,
        9348,  9863,  10056, 14376, 15846, 3480,  3887,  4932,  5888,  10246, 10281,
        11065, 11434, 12290, 12345, 12635, 13917, 528,   14523, 18426, 4127,  5613,
        9647,  8777,  15790, 18168, 3491,  5608,  10216, 5154,  8811,  16363, 437,
        2834,  3470,  9675,  12773, 17150, 2456,  7748,  8623,  3758,  14333, 18097,
        3969,  17136, 18610, 6745,  13708, 18656, 6152,  10273, 13316, 7822,  14888,
        15541, 15501, 16598, 18531, 2497,  8828,  15453, 3443,  6899,  7293,  3721,
        13954, 15822, 719,   13335, 15342, 1566,  7588,  8362,  8644,  13389, 17476,
        1513,  8257,  15942, 2620,  7224,  15557, 7696,  12178, 17371, 5285,  8439,
        11367, 4961,  7657,  17125, 11382, 11542, 16823, 2429,  7538,  10992, 680,
        7651,  10178, 6794,  11231, 18328, 1195,  12837, 15710, 1156,  17454, 18260,
        6541,  10062, 17436, 70,    282,   7519,  608,   1919,  7299,  3339,  11187,
        15788, 4771,  12599, 13753, 1822,  4233,  10561, 5233,  14135, 15888, 4109,
        14837, 18717, 3011,  15644, 17342, 10668, 11462, 15065, 2486,  6822,  7486,
        3851,  6182,  11215, 595,   11064, 15525, 9738,  10045, 14128, 929,   2222,
        11949, 10950, 12273, 15503, 3672,  6760,  9589,  3583,  5887,  8907,  13351,
        15134, 17291, 7770,  9928,  12542, 268,   10496, 17937, 1318,  2938,  6971,
        428,   1791,  9729,  6895,  8896,  10420, 2946,  4619,  6209,  7377,  7931,
        8740,  9223,  12171, 12985, 13795, 14141, 16233, 217,   958,   995,   3144,
        5905,  6178,  6596,  10427, 15013, 15669, 16343, 18465, 357,   2579,  4550,
        5223,  5890,  7642,  7900,  8441,  13416, 17740, 18131, 18679, 894,   1776,
        1852,  3262,  5830,  6008,  7877,  9570,  15838, 16029, 16176, 16583, 2190,
        2698,  3277,  4748,  5575,  6822,  8356,  9692,  11406, 11697, 12991, 15275,
        9695,  12587, 15112, 17987, 5221,  5710,  15272, 17606, 3068,  9034,  11853,
        17189, 2503,  7618,  9336,  15768, 2069,  2258,  7450,  10219, 778,   8645,
        12173, 12429, 6960,  9073,  12411, 15065, 3515,  5848,  12776, 15706, 4725,
        5967,  15682, 17350, 12416, 14871, 16503, 18679, 4218,  13329, 17613, 752,
        6184,  9180,  3188,  3971,  11453, 2580,  17414, 18001, 10285, 13728, 15896,
        612,   10652, 12442, 7637,  7724,  15724, 1427,  15130, 15355, 77,    5271,
        8934,  3121,  10373, 11930, 11913, 12253, 15701, 6582,  9841,  10243, 11595,
        16319, 16332, 6402,  11107, 14899, 4593,  5442,  9630,  1321,  3877,  17467,
        1335,  10771, 12311, 24,    16695, 18578, 11396, 17644, 18618, 7306,  14777,
        15287, 1809,  5769,  10827, 137,   3555,  5186,  201,   3340,  10470, 8954,
        12160, 17867, 6744,  9179,  14780, 3280,  9637,  17720, 1867,  10642, 14613,
        4292,  7451,  14924, 1621,  13335, 16834, 8289,  14826, 15302, 3610,  12151,
        12159, 3968,  3976,  5492,  3491,  14734, 17314, 3774,  8427,  10437, 3128,
        4202,  15889, 3821,  9781,  10862, 8264,  9191,  12337, 1476,  8123,  8946
    };
};

struct DVB_S2X_TABLE_B18 {
    static const int M = 360;
    static const int N = 64800;
    static const int K = 47520;
    static const int LINKS_MIN_CN = 14;
    static const int LINKS_MAX_CN = 16;
    static const int LINKS_TOTAL = 272519;
    static const int DEG_MAX = 15;
    static constexpr int DEG[] = { 15, 12, 3, 12, 4, 3, 0 };
    static constexpr int LEN[] = { 10, 10, 55, 5, 10, 42, 0 };
    static constexpr int POS[] = {
        214,   632,   923,   3251,  6036,  6570,  8258,  9462,  10399, 11781, 12778,
        14807, 15369, 16105, 17153, 652,   1565,  3710,  3720,  4603,  7139,  7817,
        9076,  11532, 13729, 14362, 15379, 15488, 15541, 15777, 98,    130,   520,
        622,   1806,  2474,  3378,  4773,  6896,  7533,  7744,  11317, 11511, 11574,
        15853, 95,    1168,  2985,  4995,  5032,  5310,  6932,  8571,  9181,  9193,
        9896,  10257, 12336, 12811, 14754, 1178,  1969,  2935,  3432,  3628,  4814,
        5218,  5676,  6214,  9953,  10421, 11091, 13574, 13772, 15191, 2356,  7171,
        8062,  8652,  8801,  9917,  10037, 10164, 10671, 10975, 13460, 15594, 15936,
        16378, 16711, 1401,  3622,  4493,  5190,  6908,  7193,  9583,  10283, 11832,
        12152, 12609, 13343, 13427, 13839, 15591, 485,   4930,  7552,  7574,  7629,
        8514,  10870, 10888, 11614, 11774, 12414, 13159, 15555, 16874, 16897, 203,
        711,   1373,  5149,  7271,  8191,  8523,  9012,  9645,  11391, 13989, 14402,
        15572, 16490, 16985, 1020,  3606,  4996,  5016,  7632,  9959,  11098, 11792,
        12649, 12859, 13381, 14579, 16204, 16899, 17030, 3653,  4711,  4777,  4779,
        5203,  8250,  10671, 12130, 12449, 13340, 14148, 14853, 3209,  4098,  4415,
        4777,  5358,  6681,  8049,  9805,  10139, 15608, 15628, 16532, 37,    279,
        2890,  3692,  5680,  7136,  10862, 11442, 13688, 14572, 14978, 16246, 150,
        2430,  2659,  3909,  8619,  9432,  12372, 12720, 13213, 14635, 15316, 15727,
        759,   7725,  8548,  10772, 10897, 11392, 12273, 13619, 14465, 14488, 16191,
        17039, 499,   2346,  4909,  4998,  6555,  10631, 12374, 13539, 13954, 14728,
        14768, 16213, 286,   458,   1072,  1982,  3593,  4541,  5803,  7260,  7681,
        10279, 15178, 15701, 683,   850,   1430,  4534,  4990,  9870,  10385, 10508,
        12633, 13516, 14763, 15297, 1304,  1620,  2788,  4431,  8333,  10080, 11887,
        11994, 12430, 12578, 15816, 16317, 1020,  2376,  3071,  4752,  7844,  12085,
        12338, 12790, 13930, 14874, 16264, 16947, 2917,  14555, 16711, 7491,  9627,
        11576, 863,   2959,  15686, 3115,  3698,  4721,  1992,  6059,  9232,  6038,
        7185,  14573, 1340,  3421,  3694,  4609,  8628,  12390, 2208,  8716,  8858,
        13808, 15922, 16148, 2249,  11974, 16896, 5853,  13225, 13788, 815,   4711,
        6530,  2209,  2468,  14725, 4410,  5415,  13854, 6355,  6825,  15280, 309,
        9537,  16469, 8068,  13746, 14396, 9323,  10747, 15016, 6903,  8218,  11652,
        680,   3121,  8534,  7311,  10942, 15810, 877,   965,   6600,  1742,  5760,
        12311, 3137,  4854,  11102, 2422,  7181,  7657,  11818, 13570, 15583, 6318,
        13695, 13717, 3866,  5279,  6931,  10864, 15450, 15719, 4540,  7389,  17179,
        4951,  15064, 16397, 7605,  10323, 11651, 4137,  6356,  7204,  5439,  10310,
        14018, 12843, 13416, 14274, 2804,  9644,  10370, 11150, 13275, 14293, 5134,
        5240,  11495, 864,   2151,  13541, 736,   13561, 17218, 8287,  13491, 16780,
        5718,  15660, 16593, 8455,  13981, 15971, 9467,  14810, 16276, 2229,  3946,
        8111,  7217,  7241,  12272, 67,    3678,  5473,  6684,  10779, 16599, 9465,
        12372, 16208, 6794,  14248, 16412, 2214,  10815, 11926, 3021,  6374,  12487,
        3950,  6042,  9573,  7939,  11686, 14299, 350,   3529,  4079,  4256,  5849,
        7190,  8860,  10139, 10232, 10819, 11381, 14147, 317,   992,   2421,  3962,
        4699,  6659,  7506,  10225, 10422, 10631, 12471, 17133, 1042,  1396,  2353,
        2995,  3377,  5431,  5872,  6507,  6958,  8392,  10521, 15036, 2799,  3188,
        3338,  4212,  5257,  6667,  7299,  8647,  9365,  9822,  15393, 16334, 1095,
        1357,  1964,  2027,  3439,  5975,  7077,  10182, 11538, 12085, 14873, 15081,
        5063,  15980, 16044, 16895, 2675,  3343,  8369,  15958, 186,   10209, 12824,
        14269, 4306,  6720,  10338, 16589, 2260,  7944,  10926, 16496, 821,   2379,
        3453,  11530, 818,   3049,  7651,  16046, 2127,  3717,  10120, 15916, 3267,
        11412, 13437, 15833, 1386,  7706,  15875, 16377, 508,   11392, 13620, 4097,
        14269, 15322, 9921,  12311, 12914, 7184,  10571, 15214, 3917,  8952,  11193,
        1241,  11798, 14788, 10457, 14430, 14892, 5603,  14302, 16388, 427,   2770,
        6440,  9317,  10050, 14671, 3199,  5089,  5353,  7239,  7411,  13299, 306,
        1674,  14551, 816,   7484,  12448, 706,   13444, 15695, 554,   4597,  9489,
        2104,  6359,  12468, 9266,  10617, 11381, 3277,  3793,  6604,  1731,  1887,
        9707,  885,   5432,  7884,  1786,  8137,  13590, 5024,  6886,  16155, 2777,
        7172,  8568,  3551,  8533,  13805, 3299,  8732,  15678, 633,   9789,  14366,
        11345, 14813, 16179, 1216,  5414,  13845, 5832,  7474,  10047, 1074,  3156,
        9228,  4090,  7614,  10391, 2624,  5520,  13591, 3462,  12548, 12556, 2027,
        11569, 14106, 1821,  3571,  8001,  3979,  7285,  9173,  11161, 12334, 16935,
        2642,  8811,  8819,  5359,  11128, 13310, 200,   6362,  9809,  1174,  8836,
        13549
    };
};

struct DVB_S2X_TABLE_B19 {
    static const int M = 360;
    static const int N = 64800;
    static const int K = 48600;
    static const int LINKS_MIN_CN = 15;
    static const int LINKS_MAX_CN = 17;
    static const int LINKS_TOTAL = 264599;
    static const int DEG_MAX = 14;
    static constexpr int DEG[] = { 14, 11, 3, 11, 4, 3, 0 };
    static constexpr int LEN[] = { 10, 10, 55, 5, 10, 45, 0 };
    static constexpr int POS[] = {
        15,    865,   1308,  2887,  6202,  6440,  7201,  9014,  10015, 10041, 11780,
        13602, 14265, 15506, 1054,  1416,  2903,  3746,  3753,  7608,  9121,  11097,
        11761, 12334, 14304, 15284, 15489, 15860, 388,   942,   2207,  2627,  3453,
        6684,  7105,  8633,  9292,  9413,  11574, 11789, 12990, 13558, 896,   1802,
        2100,  4497,  6650,  7324,  7693,  11232, 11848, 12625, 12982, 13238, 13719,
        15260, 2165,  2313,  3930,  5231,  9263,  10942, 12167, 12938, 13529, 13806,
        14792, 15118, 15304, 15970, 286,   951,   1083,  3401,  5527,  10235, 10417,
        10717, 12204, 12522, 12974, 13623, 13645, 13721, 895,   2500,  3051,  4393,
        4686,  5972,  7932,  8025,  8731,  9744,  10323, 10619, 14961, 16054, 1631,
        2304,  3149,  3453,  4133,  4459,  5442,  7051,  8622,  10051, 10791, 11566,
        12754, 14016, 2747,  4371,  5647,  5694,  5899,  8378,  8965,  9917,  10472,
        12163, 13349, 14760, 15005, 16196, 1119,  3605,  4141,  4969,  6694,  7031,
        7748,  8800,  9268,  9982,  10605, 11768, 12185, 12254, 2825,  3983,  3991,
        6410,  8249,  8457,  8770,  9183,  12028, 12213, 12448, 604,   1720,  2373,
        2919,  7212,  7867,  7967,  8044,  10466, 13860, 14417, 301,   1594,  5664,
        9711,  9763,  10804, 10816, 11681, 11842, 12204, 15041, 47,    555,   1796,
        2032,  3923,  5175,  5204,  7322,  12008, 15192, 15273, 2564,  2827,  4053,
        4355,  5383,  6611,  7951,  10231, 10605, 12712, 15035, 2243,  3129,  5665,
        9703,  9913,  10101, 10212, 13549, 14952, 15661, 15696, 204,   775,   3771,
        5704,  7007,  7095,  7543,  9656,  12426, 12882, 15545, 4224,  4480,  4521,
        5860,  5993,  6200,  6810,  8966,  13588, 13658, 14863, 528,   2425,  4261,
        6534,  9097,  9746,  10277, 11570, 11722, 12614, 14288, 3612,  4482,  6901,
        8453,  8546,  9588,  10302, 11161, 11365, 14894, 15018, 3742,  10567, 16199,
        7133,  9058,  11953, 6322,  6923,  15941, 8088,  9184,  10475, 677,   2998,
        15174, 4761,  5594,  9851,  2307,  13609, 15098, 4022,  12283, 12286, 5993,
        8346,  11208, 3910,  15175, 15351, 6964,  10422, 13372, 6125,  13835, 14292,
        6234,  7466,  8536,  4785,  6567,  8576,  6743,  10561, 14130, 1735,  7324,
        11459, 3414,  5686,  12861, 5457,  13085, 14942, 2789,  9707,  10189, 3474,
        7428,  8655,  393,   4691,  5694,  4825,  8033,  15186, 1458,  4367,  5864,
        5843,  11855, 14660, 7748,  8189,  15486, 4810,  13665, 13848, 5818,  6651,
        8375,  693,   5872,  7945,  172,   11594, 12687, 5430,  12616, 15658, 6934,
        7909,  11246, 3637,  12306, 12362, 3471,  5213,  9689,  14049, 14507, 15642,
        2668,  3016,  15757, 3740,  7546,  12925, 6446,  14217, 15795, 6834,  12517,
        16183, 6930,  8193,  10296, 4279,  5463,  11460, 197,   1031,  3531,  9722,
        9899,  11678, 2962,  7375,  15462, 181,   2986,  13487, 908,   3631,  15042,
        3273,  8070,  10865, 4099,  6682,  15571, 2864,  6393,  12639, 6486,  7891,
        14560, 10819, 11213, 13405, 71,    6734,  8450,  3467,  5016,  15956, 6267,
        10180, 15388, 1625,  2994,  13339, 2517,  4489,  7357,  27,    454,   1440,
        1874,  2627,  6126,  8518,  9120,  10144, 13007, 13892, 439,   991,   5000,
        5256,  7215,  8109,  8680,  10694, 12078, 13454, 15221, 1162,  4754,  5101,
        5940,  8304,  10907, 11008, 11528, 13514, 13837, 15230, 1230,  1618,  2547,
        2922,  5619,  7415,  12126, 12406, 14378, 15306, 15408, 140,   446,   3378,
        3908,  6904,  7783,  8587,  10420, 10630, 12602, 13597, 1004,  3374,  7234,
        9291,  8358,  8550,  8658,  11681, 3669,  7500,  8610,  10360, 4892,  9971,
        11846, 13233, 329,   1735,  2397,  13639, 12658, 12789, 14985, 15091, 8580,
        8769,  9451,  15185, 2383,  3542,  4270,  8840,  1379,  2256,  2452,  15454,
        1457,  6459,  7332,  12968, 5323,  7398,  14302, 6056,  9938,  10618, 104,
        6041,  12225, 4895,  14004, 14522, 1942,  6495,  6826,  8262,  15584, 16179,
        11604, 12644, 12874, 3538,  9506,  15206, 666,   6038,  8853,  5941,  8753,
        12449, 6500,  8604,  16045, 7937,  12018, 12966, 8164,  14164, 14528, 867,
        6180,  10192, 3403,  5208,  10213, 1752,  7835,  11867, 1576,  6993,  11260,
        2245,  8237,  14506, 1284,  1807,  5480,  9778,  10034, 13115, 8398,  13975,
        15705, 6906,  7770,  8242,  1896,  3277,  10631, 2168,  6889,  8036,  1616,
        6908,  11754, 11353, 13863, 14389, 2514,  7212,  12887, 5661,  6511,  10622,
        4690,  8892,  10754, 12200, 12486, 14850, 4663,  15405, 15949, 302,   309,
        1904,  5265,  7100,  7105,  4996,  7928,  11084, 5425,  10367, 15826, 6766,
        8245,  11914, 8091,  13882, 13887, 1308,  1348,  7944,  4730,  10272, 14249,
        5001,  5838,  11633, 3687,  4732,  15948, 285,   5437,  10939, 7254,  10928,
        11235, 2038,  6236,  14036, 9407,  12341, 16040
    };
};

struct DVB_S2X_TABLE_B20 {
    static const int M = 360;
    static const int N = 64800;
    static const int K = 50400;
    static const int LINKS_MIN_CN = 18;
    static const int LINKS_MAX_CN = 20;
    static const int LINKS_TOTAL = 282599;
    static const int DEG_MAX = 15;
    static constexpr int DEG[] = { 15, 12, 4, 3, 4, 3, 0 };
    static constexpr int LEN[] = { 10, 15, 15, 35, 15, 50, 0 };
    static constexpr int POS[] = {
        66,    862,   939,   3380,  4920,  5225,  5330,  6218,  7204,  7532,  7689,
        9135,  9363,  10504, 10694, 1993,  2656,  4602,  6079,  7569,  7724,  9038,
        9647,  9979,  11845, 12641, 12783, 13451, 13661, 14166, 1360,  2046,  3315,
        3423,  3974,  4747,  6535,  6632,  7261,  8173,  8391,  9517,  9928,  11749,
        11761, 3373,  3910,  3965,  4146,  4171,  6195,  6384,  7642,  9337,  9563,
        9716,  11490, 12393, 13068, 14016, 244,   2500,  3970,  6097,  6208,  6669,
        7479,  7667,  8234,  9367,  10437, 11623, 12138, 12212, 12454, 665,   1162,
        1990,  2144,  2356,  4400,  6032,  9336,  9988,  10693, 11378, 12021, 12582,
        13874, 13958, 1129,  1527,  1725,  1902,  2039,  2107,  3241,  5991,  6086,
        7866,  10793, 11132, 11318, 13636, 14100, 611,   2141,  2552,  2602,  3049,
        3185,  5339,  6495,  7390,  8033,  9068,  10844, 10977, 11047, 13995, 2805,
        4137,  4523,  4841,  7408,  8551,  8667,  8749,  8979,  9232,  9934,  10345,
        10634, 11646, 12771, 144,   1120,  2295,  3469,  4991,  5613,  7186,  7858,
        9116,  9328,  10850, 11492, 11837, 12155, 13103, 803,   1580,  1797,  4719,
        6743,  7061,  7753,  8376,  9046,  11635, 11721, 13350, 1432,  3534,  4822,
        6282,  6412,  7180,  7619,  7936,  11278, 12531, 13074, 13084, 2013,  2575,
        2887,  3930,  4725,  5498,  5625,  6209,  6836,  7268,  9062,  10950, 515,
        1037,  2033,  2624,  3044,  6028,  7163,  8729,  8772,  10358, 10659, 12466,
        464,   1685,  2749,  3321,  3778,  5322,  5386,  6294,  7928,  8871,  10278,
        13040, 408,   829,   1672,  2667,  3077,  3545,  3703,  5213,  5381,  7937,
        8474,  13126, 1617,  2490,  2636,  2723,  5431,  6975,  7159,  7900,  10849,
        11572, 11887, 12462, 1402,  2373,  6408,  6656,  6704,  8040,  8841,  9541,
        11818, 13891, 14006, 14239, 1388,  2078,  2136,  3514,  5090,  8083,  8510,
        9200,  9814,  11142, 11625, 12980, 561,   1659,  2611,  3085,  3367,  3804,
        6021,  6209,  6348,  8282,  8475,  11386, 2457,  3223,  4495,  4869,  5314,
        5774,  6532,  6552,  8987,  9196,  9199,  11591, 627,   1069,  3015,  3048,
        4275,  4545,  4617,  5606,  6070,  8237,  8659,  8953,  1028,  4096,  5253,
        6370,  8087,  8382,  8950,  8984,  9618,  12843, 13519, 14356, 560,   604,
        663,   2209,  2709,  4421,  6291,  7322,  10054, 11747, 11997, 14192, 361,
        938,   993,   2884,  3386,  9431,  9798,  10155, 11892, 12184, 13140, 13808,
        1045,  5017,  9862,  13620, 205,   3913,  9136,  13316, 2994,  4307,  10330,
        13439, 2437,  6367,  9411,  10505, 5546,  6653,  7663,  12391, 2825,  3446,
        5803,  11254, 1459,  5988,  7895,  9221,  3968,  6470,  7739,  12977, 3298,
        4154,  12918, 14282, 8890,  9389,  10144, 12801, 2529,  3668,  10005, 11652,
        4558,  8324,  10112, 12696, 491,   6153,  11815, 12813, 1300,  12716, 13107,
        13847, 5542,  6160,  11226, 12846, 5206,  9994,  11133, 7113,  12088, 12802,
        950,   1805,  8437,  4411,  10474, 12911, 3599,  7495,  8984,  4751,  10097,
        10284, 67,    5056,  11979, 10633, 10770, 13585, 1198,  3963,  9181,  746,
        4895,  11288, 7724,  8170,  9246,  6542,  8235,  8589,  1512,  4603,  11098,
        7082,  13053, 13985, 3887,  9094,  10355, 3417,  6588,  12800, 4151,  5569,
        8184,  5557,  8162,  12572, 2565,  6091,  6359,  2792,  4430,  6281,  7936,
        10786, 11229, 677,   3184,  12460, 2468,  2884,  11714, 87,    2318,  9383,
        976,   3614,  10292, 969,   3180,  14286, 7818,  12285, 13535, 3471,  10797,
        11502, 3552,  10568, 12836, 1386,  6971,  13457, 987,   7598,  9275,  5039,
        13533, 13739, 1854,  5210,  11261, 10603, 11753, 12263, 722,   1030,  12267,
        2720,  5083,  5350,  9274,  3377,  8717,  9414,  12039, 1355,  6452,  10130,
        13008, 5112,  7583,  9971,  10955, 4633,  8781,  12791, 13607, 1535,  5803,
        8062,  10467, 2326,  8224,  9176,  12082, 939,   8480,  11823, 13045, 380,
        425,   4943,  10388, 4001,  4293,  7887,  9858,  3734,  3746,  9929,  12310,
        1592,  6062,  6419,  10292, 101,   2538,  6316,  13640, 3038,  5921,  6156,
        6529,  3820,  10279, 12229, 12404, 761,   3735,  8874,  4985,  9636,  14004,
        1744,  2501,  9257,  3223,  7816,  10249, 765,   2768,  5363,  4911,  5948,
        13726, 6745,  9749,  11658, 1373,  4860,  13952, 120,   407,   13132, 862,
        2571,  3681,  3706,  5914,  8019,  7465,  10479, 12795, 441,   1017,  1563,
        6638,  8730,  10379, 3229,  4169,  11333, 1181,  7252,  11670, 1090,  4576,
        8680,  943,   9116,  11566, 3180,  7882,  12535, 2944,  4411,  12747, 3153,
        5618,  7782,  428,   2208,  10359, 447,   6906,  12192, 8495,  11164, 12870,
        641,   6397,  11868, 4165,  4534,  11544, 4594,  7957,  11969, 3667,  4604,
        7920,  2253,  4617,  13638, 1099,  4214,  6076,  461,   8085,  9875,  8128,
        13331, 13740, 8527,  9749,  12563, 4216,  6105,  12391, 6583,  13362, 14130,
        566,   2898,  4772,  4048,  7696,  8342,  539,   5111,  9923,  931,   3789,
        7276,  5306,  13717, 13901, 1540,  11240, 11353, 1845,  2752,  6810,  8553,
        10094, 10228, 9625,  12761, 13252, 4518,  4526,  9215,  5394,  6447,  10864,
        7497,  11962, 12795, 2679,  3310,  3743,  2764,  10853, 12702, 6409,  9498,
        10387
    };
};

struct DVB_S2X_TABLE_B21 {
    static const int M = 360;
    static const int N = 64800;
    static const int K = 55440;
    static const int LINKS_MIN_CN = 28;
    static const int LINKS_MAX_CN = 30;
    static const int LINKS_TOTAL = 273239;
    static const int DEG_MAX = 13;
    static constexpr int DEG[] = { 13, 12, 3, 12, 5, 3, 0 };
    static constexpr int LEN[] = { 10, 5, 60, 10, 5, 64, 0 };
    static constexpr int POS[] = {
        726,  794,  1587, 2475, 3114, 3917, 4471, 6207, 7451, 8203, 8218, 8583, 8941,
        418,  480,  1320, 1357, 1481, 2323, 3677, 5112, 7038, 7198, 8066, 9260, 9282,
        1506, 2585, 3336, 4543, 4828, 5571, 5954, 6047, 6081, 7691, 8090, 8824, 9153,
        164,  888,  1867, 2685, 2983, 4071, 4848, 4930, 5882, 7085, 7861, 8545, 8689,
        766,  1004, 1143, 1782, 1996, 2506, 2944, 3094, 4085, 5728, 8634, 8737, 8759,
        199,  341,  2068, 2100, 2708, 2896, 4173, 5846, 6167, 7798, 9101, 9159, 9329,
        617,  752,  1647, 2258, 2597, 4708, 5808, 6726, 7293, 7800, 7988, 8825, 9055,
        315,  408,  620,  1256, 1985, 2560, 3226, 5526, 6463, 6927, 7223, 7505, 7669,
        1361, 1528, 2397, 3246, 3370, 4333, 5167, 5333, 7409, 8075, 8197, 8279, 9138,
        665,  876,  2039, 2703, 2864, 3485, 3767, 4823, 7275, 7599, 8274, 8694, 9334,
        1160, 1717, 1750, 2158, 3040, 3506, 3764, 3828, 4261, 4292, 5134, 6789, 1857,
        2119, 2952, 6145, 6897, 7582, 7639, 8032, 8080, 8181, 8221, 8454, 421,  794,
        1511, 2166, 2489, 3936, 4288, 5440, 5901, 6490, 7266, 8858, 456,  2565, 4071,
        4395, 4451, 4888, 5338, 5351, 6608, 7602, 7835, 9024, 617,  912,  3362, 4085,
        4404, 5050, 5244, 6043, 6444, 6721, 7414, 8353, 4535, 7597, 7853, 2632, 4652,
        6491, 877,  1378, 8828, 434,  3309, 8607, 1075, 2525, 4103, 958,  2220, 3471,
        2256, 4350, 7277, 1731, 4306, 8524, 470,  6369, 9026, 2605, 3171, 8760, 1886,
        4900, 7558, 3825, 4488, 9230, 228,  3806, 8101, 3607, 7835, 8035, 5280, 7413,
        8380, 2606, 5100, 5549, 2309, 4329, 8570, 1577, 4746, 7473, 2939, 4664, 7327,
        2440, 8572, 8912, 4143, 8221, 8561, 3982, 5316, 7329, 387,  745,  5199, 2563,
        4077, 9076, 1428, 6482, 9178, 4600, 7640, 8483, 3918, 5239, 5388, 2006, 6768,
        9041, 5766, 7058, 7758, 2741, 3382, 5713, 116,  1863, 4193, 2339, 4499, 8437,
        1799, 5408, 6711, 6937, 7536, 8100, 8313, 8388, 9277, 1743, 3100, 7424, 1959,
        2130, 2230, 5007, 6692, 7748, 808,  3333, 5951, 1719, 7648, 8645, 102,  2996,
        6153, 739,  2765, 6496, 1107, 1760, 7023, 1067, 2666, 9235, 1125, 3760, 8095,
        2047, 3143, 6383, 2698, 3440, 5405, 1746, 1854, 1965, 380,  3171, 5816, 4155,
        5210, 9325, 2290, 2658, 3766, 167,  6239, 6635, 1338, 1541, 5813, 6148, 6574,
        7436, 3598, 3777, 6367, 731,  4247, 8887, 2152, 2600, 8950, 3774, 4099, 6605,
        2819, 3315, 6492, 1195, 3774, 7126, 572,  2723, 3467, 3509, 5379, 6756, 6853,
        7335, 7973, 8087, 8202, 9000, 817,  3136, 3533, 3732, 5001, 5148, 5202, 5402,
        6602, 7236, 7605, 8275, 185,  325,  591,  1559, 1635, 2826, 3352, 3634, 3937,
        5814, 8101, 8133, 758,  1780, 1965, 2932, 4010, 4621, 7103, 7249, 7328, 7878,
        8754, 8805, 528,  1433, 2926, 3557, 3780, 4650, 4671, 5253, 5488, 5517, 5681,
        8300, 1172, 2131, 3702, 4455, 4504, 5216, 5920, 6371, 6660, 7953, 9036, 9185,
        639,  1572, 1714, 1957, 3145, 5123, 5330, 5419, 6418, 7163, 7237, 9235, 166,
        486,  708,  1071, 2179, 3700, 4756, 5606, 5685, 6426, 6467, 6902, 462,  486,
        735,  2065, 2558, 3196, 4006, 5344, 5617, 7451, 8141, 8436, 435,  3016, 4173,
        4235, 4415, 4731, 5396, 7340, 8002, 8155, 8279, 9081, 560,  2200, 2649, 3690,
        8636, 4156, 5971, 7133, 7480, 8218, 1398, 2219, 3796, 4877, 6376, 506,  1284,
        6906, 7288, 9131, 643,  1661, 5057, 8011, 8241, 859,  3508, 5030, 575,  3942,
        6198, 3472, 5037, 8710, 3850, 8080, 9216, 3203, 8128, 8836, 3059, 5057, 8120,
        3804, 6339, 8539, 2355, 6922, 8235, 2035, 2133, 7090, 4787, 5994, 6966, 1484,
        4897, 7766, 3977, 7211, 7682, 3030, 4150, 7823, 516,  2443, 7919, 5120, 5715,
        6141, 1551, 6029, 7124, 1995, 2156, 6952, 4686, 4944, 8175, 2763, 4667, 7284,
        3648, 7312, 7361, 333,  3231, 4029, 692,  2273, 9068, 15,   3757, 7203, 2870,
        4217, 8458, 1501, 2721, 6548, 92,   2144, 6570, 1846, 4578, 7972, 2999, 3542,
        4001, 1658, 8479, 8763, 4169, 6305, 7774, 2357, 2475, 8504, 1418, 1516, 3587,
        2715, 2754, 7789, 1765, 2387, 8858, 5115, 8712, 9029, 160,  2544, 5818, 1600,
        3668, 7706, 1589, 3143, 7396, 3310, 3953, 8862, 2054, 3075, 4821, 4061, 4355,
        6130, 2086, 2534, 4831, 4229, 4981, 9057, 24,   5398, 6062, 1370, 7446, 8116,
        409,  1199, 6499, 1088, 1648, 7267, 176,  8059, 9351, 558,  3830, 4748, 4772,
        8116, 8277, 1253, 2418, 3450, 5305, 5679, 7537, 437,  561,  7932, 3058, 4317,
        9184, 382,  1516, 6576, 471,  6158, 7469, 5,    955,  2716, 964,  5239, 8890,
        727,  738,  4868, 7443, 7560, 7580, 2075, 2266, 8918, 4021, 4267, 6797, 6103,
        6111, 8823, 6523, 6531, 9063
    };
};

struct DVB_S2X_TABLE_B22 {
    static const int M = 360;
    static const int N = 64800;
    static const int K = 38880;
    static const int LINKS_MIN_CN = 10;
    static const int LINKS_MAX_CN = 11;
    static const int LINKS_TOTAL = 284759;
    static const int DEG_MAX = 19;
    static constexpr int DEG[] = { 19, 4, 3, 0 };
    static constexpr int LEN[] = { 19, 19, 70, 0 };
    static constexpr int POS[] = {
        113,   1557,  3316,  5680,  6241,  10407, 13404, 13947, 14040, 14353, 15522,
        15698, 16079, 17363, 19374, 19543, 20530, 22833, 24339, 271,   1361,  6236,
        7006,  7307,  7333,  12768, 15441, 15568, 17923, 18341, 20321, 21502, 22023,
        23938, 25351, 25590, 25876, 25910, 73,    605,   872,   4008,  6279,  7653,
        10346, 10799, 12482, 12935, 13604, 15909, 16526, 19782, 20506, 22804, 23629,
        24859, 25600, 1445,  1690,  4304,  4851,  8919,  9176,  9252,  13783, 16076,
        16675, 17274, 18806, 18882, 20819, 21958, 22451, 23869, 23999, 24177, 1290,
        2337,  5661,  6371,  8996,  10102, 10941, 11360, 12242, 14918, 16808, 20571,
        23374, 24046, 25045, 25060, 25662, 25783, 25913, 28,    42,    1926,  3421,
        3503,  8558,  9453,  10168, 15820, 17473, 19571, 19685, 22790, 23336, 23367,
        23890, 24061, 25657, 25680, 0,     1709,  4041,  4932,  5968,  7123,  8430,
        9564,  10596, 11026, 14761, 19484, 20762, 20858, 23803, 24016, 24795, 25853,
        25863, 29,    1625,  6500,  6609,  16831, 18517, 18568, 18738, 19387, 20159,
        20544, 21603, 21941, 24137, 24269, 24416, 24803, 25154, 25395, 55,    66,
        871,   3700,  11426, 13221, 15001, 16367, 17601, 18380, 22796, 23488, 23938,
        25476, 25635, 25678, 25807, 25857, 25872, 1,     19,    5958,  8548,  8860,
        11489, 16845, 18450, 18469, 19496, 20190, 23173, 25262, 25566, 25668, 25679,
        25858, 25888, 25915, 7520,  7690,  8855,  9183,  14654, 16695, 17121, 17854,
        18083, 18428, 19633, 20470, 20736, 21720, 22335, 23273, 25083, 25293, 25403,
        48,    58,    410,   1299,  3786,  10668, 18523, 18963, 20864, 22106, 22308,
        23033, 23107, 23128, 23990, 24286, 24409, 24595, 25802, 12,    51,    3894,
        6539,  8276,  10885, 11644, 12777, 13427, 14039, 15954, 17078, 19053, 20537,
        22863, 24521, 25087, 25463, 25838, 3509,  8748,  9581,  11509, 15884, 16230,
        17583, 19264, 20900, 21001, 21310, 22547, 22756, 22959, 24768, 24814, 25594,
        25626, 25880, 21,    29,    69,    1448,  2386,  4601,  6626,  6667,  10242,
        13141, 13852, 14137, 18640, 19951, 22449, 23454, 24431, 25512, 25814, 18,
        53,    7890,  9934,  10063, 16728, 19040, 19809, 20825, 21522, 21800, 23582,
        24556, 25031, 25547, 25562, 25733, 25789, 25906, 4096,  4582,  5766,  5894,
        6517,  10027, 12182, 13247, 15207, 17041, 18958, 20133, 20503, 22228, 24332,
        24613, 25689, 25855, 25883, 0,     25,    819,   5539,  7076,  7536,  7695,
        9532,  13668, 15051, 17683, 19665, 20253, 21996, 24136, 24890, 25758, 25784,
        25807, 34,    40,    44,    4215,  6076,  7427,  7965,  8777,  11017, 15593,
        19542, 22202, 22973, 23397, 23423, 24418, 24873, 25107, 25644, 1595,  6216,
        22850, 25439, 1562,  15172, 19517, 22362, 7508,  12879, 24324, 24496, 6298,
        15819, 16757, 18721, 11173, 15175, 19966, 21195, 59,    13505, 16941, 23793,
        2267,  4830,  12023, 20587, 8827,  9278,  13072, 16664, 14419, 17463, 23398,
        25348, 6112,  16534, 20423, 22698, 493,   8914,  21103, 24799, 6896,  12761,
        13206, 25873, 2,     1380,  12322, 21701, 11600, 21306, 25753, 25790, 8421,
        13076, 14271, 15401, 9630,  14112, 19017, 20955, 212,   13932, 21781, 25824,
        5961,  9110,  16654, 19636, 58,    5434,  9936,  12770, 6575,  11433, 19798,
        2731,  7338,  20926, 14253, 18463, 25404, 21791, 24805, 25869, 2,     11646,
        15850, 6075,  8586,  23819, 18435, 22093, 24852, 2103,  2368,  11704, 10925,
        17402, 18232, 9062,  25061, 25674, 18497, 20853, 23404, 18606, 19364, 19551,
        7,     1022,  25543, 6744,  15481, 25868, 9081,  17305, 25164, 8,     23701,
        25883, 9680,  19955, 22848, 56,    4564,  19121, 5595,  15086, 25892, 3174,
        17127, 23183, 19397, 19817, 20275, 12561, 24571, 25825, 7111,  9889,  25865,
        19104, 20189, 21851, 549,   9686,  25548, 6586,  20325, 25906, 3224,  20710,
        21637, 641,   15215, 25754, 13484, 23729, 25818, 2043,  7493,  24246, 16860,
        25230, 25768, 22047, 24200, 24902, 9391,  18040, 19499, 7855,  24336, 25069,
        23834, 25570, 25852, 1977,  8800,  25756, 6671,  21772, 25859, 3279,  6710,
        24444, 24099, 25117, 25820, 5553,  12306, 25915, 48,    11107, 23907, 10832,
        11974, 25773, 2223,  17905, 25484, 16782, 17135, 20446, 475,   2861,  3457,
        16218, 22449, 24362, 11716, 22200, 25897, 8315,  15009, 22633, 13,    20480,
        25852, 12352, 18658, 25687, 3681,  14794, 23703, 30,    24531, 25846, 4103,
        22077, 24107, 23837, 25622, 25812, 3627,  13387, 25839, 908,   5367,  19388,
        0,     6894,  25795, 20322, 23546, 25181, 8178,  25260, 25437, 2449,  13244,
        22565, 31,    18928, 22741, 1312,  5134,  14838, 6085,  13937, 24220, 66,
        14633, 25670, 47,    22512, 25472, 8867,  24704, 25279, 6742,  21623, 22745,
        147,   9948,  24178, 8522,  24261, 24307, 19202, 22406, 24609
    };
};

struct DVB_S2X_TABLE_B23 {
    static const int M = 360;
    static const int N = 64800;
    static const int K = 43200;
    static const int LINKS_MIN_CN = 12;
    static const int LINKS_MAX_CN = 14;
    static const int LINKS_TOTAL = 281159;
    static const int DEG_MAX = 16;
    static constexpr int DEG[] = { 16, 4, 3, 0 };
    static constexpr int LEN[] = { 23, 2, 95, 0 };
    static constexpr int POS[] = {
        692,   1779,  1973,  2726,  5151,  6088,  7921,  9618,  11804, 13043, 15975,
        16214, 16889, 16980, 18585, 18648, 13,    4090,  4319,  5288,  8102,  10110,
        10481, 10527, 10953, 11185, 12069, 13177, 14217, 15963, 17661, 20959, 2330,
        2516,  2902,  4087,  6338,  8015,  8638,  9436,  10294, 10843, 11802, 12304,
        12371, 14095, 18486, 18996, 125,   586,   5137,  5701,  6432,  6500,  8131,
        8327,  10488, 11032, 11334, 11449, 12504, 16000, 20753, 21317, 30,    480,
        2681,  3635,  3898,  4058,  12803, 14734, 20252, 20306, 20680, 21329, 21333,
        21466, 21562, 21568, 20,    44,    738,   4965,  5516,  7659,  8464,  8759,
        12216, 14630, 18241, 18711, 19093, 20217, 21316, 21490, 31,    43,    3554,
        5289,  5667,  8687,  14885, 16579, 17883, 18384, 18486, 19142, 20785, 20932,
        21131, 21308, 7054,  9276,  10435, 12324, 12354, 13849, 14285, 16482, 19212,
        19217, 19221, 20499, 20831, 20925, 21195, 21247, 9,     13,    4099,  10353,
        10747, 14884, 15492, 17650, 19291, 19394, 20356, 20658, 21068, 21117, 21183,
        21586, 28,    2250,  2980,  8988,  10282, 12503, 13301, 18351, 20546, 20622,
        21006, 21293, 21344, 21472, 21530, 21542, 17,    32,    2521,  4374,  5098,
        7525,  13035, 14437, 15283, 18635, 19136, 20240, 21147, 21179, 21300, 21349,
        57,    4735,  5657,  7649,  8807,  12375, 16092, 16178, 16379, 17545, 19461,
        19489, 20321, 20530, 21453, 21457, 35,    55,    5333,  14423, 14670, 15438,
        19468, 19667, 20823, 21084, 21241, 21344, 21447, 21520, 21554, 21586, 13,
        20,    2025,  11854, 12516, 14938, 15929, 18081, 19730, 19929, 20408, 21338,
        21391, 21425, 21468, 21546, 54,    7451,  8176,  10136, 15240, 16442, 16482,
        19431, 19483, 19762, 20647, 20839, 20966, 21512, 21579, 21592, 26,    465,
        3604,  4233,  9831,  11741, 13692, 18953, 18974, 21021, 21039, 21133, 21282,
        21488, 21532, 21558, 1,     7,     16,    59,    6979,  7675,  7717,  9791,
        12370, 13050, 18534, 18729, 19846, 19864, 20127, 20165, 15,    31,    11089,
        12360, 13640, 14237, 17937, 18043, 18410, 19443, 21107, 21444, 21449, 21528,
        21576, 21584, 32,    51,    9768,  17848, 18095, 19326, 19594, 19618, 19765,
        20440, 20482, 20582, 21236, 21338, 21563, 21587, 44,    55,    4864,  10253,
        11306, 12117, 13076, 13901, 15610, 17057, 18205, 19794, 20939, 21132, 21267,
        21573, 3436,  11304, 15361, 16511, 16860, 18238, 18639, 19341, 20106, 20123,
        20407, 21200, 21280, 21452, 21526, 21569, 679,   8822,  11045, 14403, 16588,
        17838, 19117, 19453, 20265, 20558, 21374, 21396, 21428, 21442, 21529, 21590,
        391,   13002, 13140, 14314, 17169, 17175, 17846, 18122, 19447, 20075, 20212,
        20436, 20583, 21330, 21359, 21403, 7601,  10257, 20060, 21285, 4419,  9150,
        18097, 20315, 4675,  13376, 21435, 610,   1238,  16704, 5732,  7096,  21104,
        5690,  13531, 14545, 4334,  14839, 17357, 8,     2814,  17674, 2392,  8128,
        18369, 502,   7403,  15133, 343,   13624, 20673, 13188, 15687, 21593, 321,
        16866, 21347, 1242,  4261,  17449, 4691,  8086,  8691,  8500,  11538, 20278,
        6269,  12905, 18192, 5984,  15452, 17111, 11541, 18717, 21534, 16,    10780,
        16107, 12310, 12959, 20390, 1365,  18306, 19634, 6125,  19132, 20242, 3012,
        17233, 21533, 5816,  13021, 21440, 13207, 17811, 18798, 2762,  7586,  12139,
        3949,  5545,  13584, 11374, 18279, 19241, 2736,  10989, 21209, 4095,  20677,
        21395, 8251,  10084, 20498, 7628,  8875,  21406, 2743,  8943,  9090,  1817,
        7788,  15767, 9333,  9838,  21268, 6203,  9480,  12042, 5747,  21187, 21468,
        2553,  18281, 21500, 3179,  9155,  15222, 12498, 18109, 20326, 14106, 21209,
        21592, 7454,  17484, 20791, 20804, 21120, 21574, 5754,  18178, 20935, 30,
        4322,  21381, 11905, 20416, 21397, 12452, 19899, 21497, 1917,  6028,  16868,
        9891,  18710, 18953, 912,   21083, 21446, 370,   14355, 18069, 16519, 19003,
        20902, 11163, 17558, 18424, 8427,  14396, 21405, 8885,  11796, 21361, 4960,
        15431, 20653, 11944, 16839, 21236, 9967,  14529, 17208, 14144, 19354, 19745,
        7986,  12680, 21396, 6097,  11501, 13028, 33,    13803, 21038, 3177,  20124,
        20803, 2692,  6841,  18655, 971,   5892,  14354, 3887,  19455, 21271, 17214,
        17315, 21148, 6539,  13910, 21526, 3809,  5153,  15793, 3865,  21438, 21510,
        7129,  17787, 19636, 5972,  13150, 14182, 7078,  14906, 16911, 15705, 21160,
        21482, 5479,  13860, 19763, 16817, 19722, 20001, 14649, 16147, 18886, 15138,
        18578, 21502, 2096,  2534,  17760, 11920, 13460, 19783, 19876, 20071, 20583,
        6241,  14230, 20775, 16138, 16386, 21371, 8616,  15624, 18453, 6013,  8015,
        21599, 9184,  10688, 20792, 18122, 21141, 21469, 10706, 13177, 20957, 15148,
        15584, 20959, 9114,  9432,  16467, 5483,  14687, 14705, 8325,  21161, 21410,
        2328,  17670, 19834, 7015,  20802, 21385, 52,    5451,  20379, 9689,  15537,
        19733
    };
};

struct DVB_S2X_TABLE_B24 {
    static const int M = 360;
    static const int N = 64800;
    static const int K = 47520;
    static const int LINKS_MIN_CN = 15;
    static const int LINKS_MAX_CN = 17;
    static const int LINKS_TOTAL = 278999;
    static const int DEG_MAX = 15;
    static constexpr int DEG[] = { 15, 4, 3, 0 };
    static constexpr int LEN[] = { 23, 7, 102, 0 };
    static constexpr int POS[] = {
        696,   989,   1238,  3091,  3116,  3738,  4269,  6406,  7033,  8048,  9157,
        10254, 12033, 16456, 16912, 444,   1488,  6541,  8626,  10735, 12447, 13111,
        13706, 14135, 15195, 15947, 16453, 16916, 17137, 17268, 401,   460,   992,
        1145,  1576,  1678,  2238,  2320,  4280,  6770,  10027, 12486, 15363, 16714,
        17157, 1161,  3108,  3727,  4508,  5092,  5348,  5582,  7727,  11793, 12515,
        12917, 13362, 14247, 16717, 17205, 542,   1190,  6883,  7911,  8349,  8835,
        10489, 11631, 14195, 15009, 15454, 15482, 16632, 17040, 17063, 17,    487,
        776,   880,   5077,  6172,  9771,  11446, 12798, 16016, 16109, 16171, 17087,
        17132, 17226, 1337,  3275,  3462,  4229,  9246,  10180, 10845, 10866, 12250,
        13633, 14482, 16024, 16812, 17186, 17241, 15,    980,   2305,  3674,  5971,
        8224,  11499, 11752, 11770, 12897, 14082, 14836, 15311, 16391, 17209, 0,
        3926,  5869,  8696,  9351,  9391,  11371, 14052, 14172, 14636, 14974, 16619,
        16961, 17033, 17237, 3033,  5317,  6501,  8579,  10698, 12168, 12966, 14019,
        15392, 15806, 15991, 16493, 16690, 17062, 17090, 981,   1205,  4400,  6410,
        11003, 13319, 13405, 14695, 15846, 16297, 16492, 16563, 16616, 16862, 16953,
        1725,  4276,  8869,  9588,  14062, 14486, 15474, 15548, 16300, 16432, 17042,
        17050, 17060, 17175, 17273, 1807,  5921,  9960,  10011, 14305, 14490, 14872,
        15852, 16054, 16061, 16306, 16799, 16833, 17136, 17262, 2826,  4752,  6017,
        6540,  7016,  8201,  14245, 14419, 14716, 15983, 16569, 16652, 17171, 17179,
        17247, 1662,  2516,  3345,  5229,  8086,  9686,  11456, 12210, 14595, 15808,
        16011, 16421, 16825, 17112, 17195, 2890,  4821,  5987,  7226,  8823,  9869,
        12468, 14694, 15352, 15805, 16075, 16462, 17102, 17251, 17263, 3751,  3890,
        4382,  5720,  10281, 10411, 11350, 12721, 13121, 14127, 14980, 15202, 15335,
        16735, 17123, 26,    30,    2805,  5457,  6630,  7188,  7477,  7556,  11065,
        16608, 16859, 16909, 16943, 17030, 17103, 40,    4524,  5043,  5566,  9645,
        10204, 10282, 11696, 13080, 14837, 15607, 16274, 17034, 17225, 17266, 904,
        3157,  6284,  7151,  7984,  11712, 12887, 13767, 15547, 16099, 16753, 16829,
        17044, 17250, 17259, 7,     311,   4876,  8334,  9249,  11267, 14072, 14559,
        15003, 15235, 15686, 16331, 17177, 17238, 17253, 4410,  8066,  8596,  9631,
        10369, 11249, 12610, 15769, 16791, 16960, 17018, 17037, 17062, 17165, 17204,
        24,    8261,  9691,  10138, 11607, 12782, 12786, 13424, 13933, 15262, 15795,
        16476, 17084, 17193, 17220, 88,    11622, 14705, 15890, 304,   2026,  2638,
        6018,  1163,  4268,  11620, 17232, 9701,  11785, 14463, 17260, 4118,  10952,
        12224, 17006, 3647,  10823, 11521, 12060, 1717,  3753,  9199,  11642, 2187,
        14280, 17220, 14787, 16903, 17061, 381,   3534,  4294,  3149,  6947,  8323,
        12562, 16724, 16881, 7289,  9997,  15306, 5615,  13152, 17260, 5666,  16926,
        17027, 4190,  7798,  16831, 4778,  10629, 17180, 10001, 13884, 15453, 6,
        2237,  8203,  7831,  15144, 15160, 9186,  17204, 17243, 9435,  17168, 17237,
        42,    5701,  17159, 7812,  14259, 15715, 39,    4513,  6658,  38,    9368,
        11273, 1119,  4785,  17182, 5620,  16521, 16729, 16,    6685,  17242, 210,
        3452,  12383, 466,   14462, 16250, 10548, 12633, 13962, 1452,  6005,  16453,
        22,    4120,  13684, 5195,  11563, 16522, 5518,  16705, 17201, 12233, 14552,
        15471, 6067,  13440, 17248, 8660,  8967,  17061, 8673,  12176, 15051, 5959,
        15767, 16541, 3244,  12109, 12414, 31,    15913, 16323, 3270,  15686, 16653,
        24,    7346,  14675, 12,    1531,  8740,  6228,  7565,  16667, 16936, 17122,
        17162, 4868,  8451,  13183, 3714,  4451,  16919, 11313, 13801, 17132, 17070,
        17191, 17242, 1911,  11201, 17186, 14,    17190, 17254, 11760, 16008, 16832,
        14543, 17033, 17278, 16129, 16765, 17155, 6891,  15561, 17007, 12741, 14744,
        17116, 8992,  16661, 17277, 1861,  11130, 16742, 4822,  13331, 16192, 13281,
        14027, 14989, 38,    14887, 17141, 10698, 13452, 15674, 4,     2539,  16877,
        857,   17170, 17249, 11449, 11906, 12867, 285,   14118, 16831, 15191, 17214,
        17242, 39,    728,   16915, 2469,  12969, 15579, 16644, 17151, 17164, 2592,
        8280,  10448, 9236,  12431, 17173, 9064,  16892, 17233, 4526,  16146, 17038,
        31,    2116,  16083, 15837, 16951, 17031, 5362,  8382,  16618, 6137,  13199,
        17221, 2841,  15068, 17068, 24,    3620,  17003, 9880,  15718, 16764, 1784,
        10240, 17209, 2731,  10293, 10846, 3121,  8723,  16598, 8563,  15662, 17088,
        13,    1167,  14676, 29,    13850, 15963, 3654,  7553,  8114,  23,    4362,
        14865, 4434,  14741, 16688, 8362,  13901, 17244, 13687, 16736, 17232, 46,
        4229,  13394, 13169, 16383, 16972, 16031, 16681, 16952, 3384,  9894,  12580,
        9841,  14414, 16165, 5013,  17099, 17115, 2130,  8941,  17266, 6907,  15428,
        17241, 16,    1860,  17235, 2151,  16014, 16643, 14954, 15958, 17222, 3969,
        8419,  15116, 31,    15593, 16984, 11514, 16605, 17255,
    };
};

struct DVB_S2X_TABLE_C1 {
    static const int M = 360;
    static const int N = 16200;
    static const int K = 3960;
    static const int LINKS_MIN_CN = 3;
    static const int LINKS_MAX_CN = 4;
    static const int LINKS_TOTAL = 48959;
    static const int DEG_MAX = 10;
    static constexpr int DEG[] = { 10, 3, 0 };
    static constexpr int LEN[] = { 5, 6, 0 };
    static constexpr int POS[] = {
        9054, 9186,  12155, 1000,  7383,  6459,  2992,  4723,  8135,  11250, 2624,  9237,
        7139, 12238, 11962, 4361,  5292,  10967, 11036, 8105,  2044,  11996, 5654,  7568,
        7002, 3549,  4767,  8767,  2872,  8345,  6966,  8473,  5180,  8084,  3359,  5051,
        9576, 5139,  1893,  902,   3041,  3801,  8252,  11951, 909,   8535,  1038,  8400,
        3200, 4585,  5291,  10484, 10872, 442,   7516,  3720,  11469, 769,   10998, 10575,
        1436, 2935,  6905,  8610,  11285, 1873,  5634,  6383,
    };
};

struct DVB_S2X_TABLE_C2 {
    static const int M = 360;
    static const int N = 16200;
    static const int K = 4320;
    static const int LINKS_MIN_CN = 4;
    static const int LINKS_MAX_CN = 5;
    static const int LINKS_TOTAL = 58319;
    static const int DEG_MAX = 21;
    static constexpr int DEG[] = { 21, 4, 3, 0 };
    static constexpr int LEN[] = { 3, 6, 3, 0 };
    static constexpr int POS[] = {
        1953,  2331,  2545, 2623,  4653,  5012,  5700,  6458,  6875,  7605,  7694,
        7881,  8416,  8758, 9181,  9555,  9578,  9932,  10068, 11479, 11699, 514,
        784,   2059,  2129, 2386,  2454,  3396,  5184,  6624,  6825,  7533,  7861,
        9116,  9473,  9601, 10432, 11011, 11159, 11378, 11528, 11598, 483,   1303,
        1735,  2291,  3302, 3648,  4222,  4522,  5511,  6626,  6804,  7404,  7752,
        7982,  8108,  8930, 9151,  9793,  9876,  10786, 11879, 1956,  7572,  9020,
        9971,  13,    1578, 7445,  8373,  6805,  6857,  8615,  11179, 7983,  8022,
        10017, 11748, 4939, 8861,  10444, 11661, 2278,  3733,  6265,  10009, 4494,
        7974,  10649, 8909, 11030, 11696, 3131,  9964,  10480,
    };
};

struct DVB_S2X_TABLE_C3 {
    static const int M = 360;
    static const int N = 16200;
    static const int K = 5040;
    static const int LINKS_MIN_CN = 4;
    static const int LINKS_MAX_CN = 5;
    static const int LINKS_TOTAL = 55799;
    static const int DEG_MAX = 12;
    static constexpr int DEG[] = { 12, 9, 3, 0 };
    static constexpr int LEN[] = { 5, 1, 8, 0 };
    static constexpr int POS[] = {
        1606, 3617, 7973, 6737,  9495, 4209,  9209, 4565, 4250, 7823,  9384, 400,
        4105, 991,  923,  3562,  3892, 10993, 5640, 8196, 6652, 4653,  9116, 7677,
        6348, 1341, 5445, 1494,  7799, 831,   4952, 5106, 3011, 9921,  6537, 8476,
        7854, 5274, 8572, 3741,  5674, 11128, 4097, 1398, 5671, 7302,  8155, 2641,
        6548, 2103, 590,  5749,  5722, 10,    2682, 1063, 633,  2949,  207,  6065,
        2828, 6366, 4766, 399,   935,  7611,  84,   150,  3146, 5363,  7455, 7140,
        9297, 482,  4848, 8458,  1631, 5344,  5729, 6767, 4836, 11019, 4463, 3882,
        4107, 9610, 5454, 11137, 4328, 6307,  3260, 7897, 3809,
    };
};

struct DVB_S2X_TABLE_C4 {
    static const int M = 360;
    static const int N = 16200;
    static const int K = 7560;
    static const int LINKS_MIN_CN = 8;
    static const int LINKS_MAX_CN = 9;
    static const int LINKS_TOTAL = 73079;
    static const int DEG_MAX = 24;
    static constexpr int DEG[] = { 24, 4, 3, 0 };
    static constexpr int LEN[] = { 4, 8, 9, 0 };
    static constexpr int POS[] = {
        3,    137,  314,  327,  983,  1597, 2028, 3043, 3217, 4109, 6020, 6178, 6535,
        6560, 7146, 7180, 7408, 7790, 7893, 8123, 8313, 8526, 8616, 8638, 356,  1197,
        1208, 1839, 1903, 2712, 3088, 3537, 4091, 4301, 4919, 5068, 6025, 6195, 6324,
        6378, 6686, 6829, 7558, 7745, 8042, 8382, 8587, 8602, 18,   187,  1115, 1417,
        1463, 2300, 2328, 3502, 3805, 4677, 4827, 5551, 5968, 6394, 6412, 6753, 7169,
        7524, 7695, 7976, 8069, 8118, 8522, 8582, 714,  2713, 2726, 2964, 3055, 3220,
        3334, 3459, 5557, 5765, 5841, 6290, 6419, 6573, 6856, 7786, 7937, 8156, 8286,
        8327, 8384, 8448, 8539, 8559, 3452, 7935, 8092, 8623, 56,   1955, 3000, 8242,
        1809, 4094, 7991, 8489, 2220, 6455, 7849, 8548, 1006, 2576, 3247, 6976, 2177,
        6048, 7795, 8295, 1413, 2595, 7446, 8594, 2101, 3714, 7541, 8531, 10,   5961,
        7484, 3144, 4636, 5282, 5708, 5875, 8390, 3322, 5223, 7975, 197,  4653, 8283,
        598,  5393, 8624, 906,  7249, 7542, 1223, 2148, 8195, 976,  2001, 5005,
    };
};

struct DVB_S2X_TABLE_C5 {
    static const int M = 360;
    static const int N = 16200;
    static const int K = 8640;
    static const int LINKS_MIN_CN = 9;
    static const int LINKS_MAX_CN = 10;
    static const int LINKS_TOTAL = 75239;
    static const int DEG_MAX = 21;
    static constexpr int DEG[] = { 21, 4, 3, 0 };
    static constexpr int LEN[] = { 5, 5, 14, 0 };
    static constexpr int POS[] = {
        32,   384,  430,  591,  1296, 1976, 1999, 2137, 2175, 3638, 4214, 4304, 4486,
        4662, 4999, 5174, 5700, 6969, 7115, 7138, 7189, 1788, 1881, 1910, 2724, 4504,
        4928, 4973, 5616, 5686, 5718, 5846, 6523, 6893, 6994, 7074, 7100, 7277, 7399,
        7476, 7480, 7537, 2791, 2824, 2927, 4196, 4298, 4800, 4948, 5361, 5401, 5688,
        5818, 5862, 5969, 6029, 6244, 6645, 6962, 7203, 7302, 7454, 7534, 574,  1461,
        1826, 2056, 2069, 2387, 2794, 3349, 3366, 4951, 5826, 5834, 5903, 6640, 6762,
        6786, 6859, 7043, 7418, 7431, 7554, 14,   178,  675,  823,  890,  930,  1209,
        1311, 2898, 4339, 4600, 5203, 6485, 6549, 6970, 7208, 7218, 7298, 7454, 7457,
        7462, 4075, 4188, 7313, 7553, 5145, 6018, 7148, 7507, 3198, 4858, 6983, 7033,
        3170, 5126, 5625, 6901, 2839, 6093, 7071, 7450, 11,   3735, 5413, 2497, 5400,
        7238, 2067, 5172, 5714, 1889, 7173, 7329, 1795, 2773, 3499, 2695, 2944, 6735,
        3221, 4625, 5897, 1690, 6122, 6816, 5013, 6839, 7358, 1601, 6849, 7415, 2180,
        7389, 7543, 2121, 6838, 7054, 1948, 3109, 5046, 272,  1015, 7464,
    };
};

struct DVB_S2X_TABLE_C6 {
    static const int M = 360;
    static const int N = 16200;
    static const int K = 9360;
    static const int LINKS_MIN_CN = 9;
    static const int LINKS_MAX_CN = 10;
    static const int LINKS_TOTAL = 68399;
    static const int DEG_MAX = 13;
    static constexpr int DEG[] = { 13, 12, 3, 0 };
    static constexpr int LEN[] = { 2, 6, 18, 0 };
    static constexpr int POS[] = {
        6106, 5389, 698,  6749, 6294, 1653, 1984, 2167, 6139, 6095, 3832, 2468, 6115,
        4202, 2362, 1852, 1264, 3564, 6345, 498,  6137, 3908, 3302, 527,  2767, 6667,
        3422, 1242, 1377, 2238, 2899, 1974, 1957, 261,  3463, 4994, 215,  2338, 3016,
        5109, 6533, 2665, 5300, 4908, 4967, 5787, 726,  229,  1970, 2789, 6146, 5765,
        6649, 2871, 884,  1670, 2597, 5058, 3659, 6594, 5042, 304,  5521, 2811, 0,
        4214, 2626, 2211, 1236, 3771, 852,  6356, 6797, 3463, 1523, 1830, 3938, 5593,
        2128, 5791, 3421, 3680, 6692, 1377, 3808, 3475, 5551, 6035, 2247, 3662, 759,
        6783, 116,  6380, 4586, 3367, 1,    5003, 3518, 6557, 6510, 1830, 839,  4421,
        5431, 5959, 6152, 3174, 5113, 4520, 5399, 1303, 2496, 2841, 741,  220,  2731,
        1830, 4193, 1875, 3935, 223,  9,    4720, 423,  3107, 2676, 840,  1950, 6177,
        6457, 4091, 94,   5102, 1907, 6050, 3455, 714,  3,    559,  502,  4268, 4164,
        1019, 5558, 271,  6127, 854,  3221, 959,  5337, 2735,
    };
};

struct DVB_S2X_TABLE_C7 {
    static const int M = 360;
    static const int N = 16200;
    static const int K = 11520;
    static const int LINKS_MIN_CN = 12;
    static const int LINKS_MAX_CN = 13;
    static const int LINKS_TOTAL = 60839;
    static const int DEG_MAX = 12;
    static constexpr int DEG[] = { 12, 5, 3, 0 };
    static constexpr int LEN[] = { 5, 1, 26, 0 };
    static constexpr int POS[] = {
        2686, 655,  2308, 1603, 336,  1743, 2778, 1263, 3555, 185,  4212, 621,  286,
        2994, 2599, 2265, 126,  314,  3992, 4560, 2845, 2764, 2540, 1476, 2670, 3599,
        2900, 2281, 3597, 2768, 4423, 2805, 836,  130,  1204, 4162, 1884, 4228, 1253,
        2578, 3053, 3650, 2587, 4468, 2784, 1644, 1490, 4655, 4258, 1699, 4363, 4555,
        3810, 4046, 3806, 344,  2459, 4067, 3327, 3510, 1021, 2741, 2528, 2168, 2820,
        254,  1080, 616,  1465, 4192, 2972, 2356, 2976, 1534, 4412, 1937, 2724, 1430,
        3024, 600,  1952, 2136, 3573, 3009, 3123, 1288, 4553, 2299, 806,  2997, 402,
        4330, 3302, 4567, 698,  2364, 498,  3146, 1809, 647,  992,  3512, 32,   4301,
        1238, 251,  450,  1657, 737,  641,  560,  1720, 2893, 1689, 2206, 902,  3998,
        1784, 2094, 2090, 3126, 1201, 1565, 764,  3473, 891,  903,  2413, 2286, 2900,
        2348, 3026, 2033, 1502, 2404, 1243, 556,  308,  2222, 3825, 1523, 3311, 389,
    };
};

struct DVB_S2X_TABLE_C8 {
    static const int M = 360;
    static const int N = 32400;
    static const int K = 6480;
    static const int LINKS_MIN_CN = 3;
    static const int LINKS_MAX_CN = 4;
    static const int LINKS_TOTAL = 103679;
    static const int DEG_MAX = 13;
    static constexpr int DEG[] = { 13, 3, 0 };
    static constexpr int LEN[] = { 9, 9, 0 };
    static constexpr int POS[] = {
        18222, 6715,  4908,  21568, 22821, 11708, 4769,  4495,  22243, 25872, 9051,
        19072, 13956, 2038,  5205,  21215, 21009, 9584,  2403,  23652, 20866, 20130,
        677,   9509,  6136,  773,   19936, 14590, 17829, 473,   4432,  23171, 11386,
        17937, 22084, 24450, 267,   8822,  19335, 16376, 16769, 5111,  9794,  18907,
        827,   12385, 12370, 21647, 10938, 23619, 11633, 15865, 23417, 7631,  12243,
        21546, 4192,  22117, 14757, 4118,  9686,  17021, 8531,  15989, 8807,  15533,
        16584, 18529, 19699, 17821, 4252,  1254,  5952,  3163,  20295, 6944,  1022,
        19743, 129,   16579, 23524, 25897, 14690, 11222, 16250, 9925,  4268,  999,
        7102,  24528, 152,   18361, 3708,  3454,  16604, 1551,  5809,  20324, 4775,
        22418, 19091, 19674, 10975, 7327,  24133, 10950, 22779, 11388, 13818, 20668,
        7556,  12333, 16446, 19684, 12510, 25118, 8162,  17026, 6850,  1269,  21895,
        7137,  25270, 11858, 24153, 13303, 7885,  16438, 12805, 10473, 15004, 8052,
        2088,  10379, 10067, 21438, 13426, 10440, 17696, 727,   12164, 22623, 8408,
        17849,
    };
};

struct DVB_S2X_TABLE_C9 {
    static const int M = 360;
    static const int N = 32400;
    static const int K = 7920;
    static const int LINKS_MIN_CN = 3;
    static const int LINKS_MAX_CN = 4;
    static const int LINKS_TOTAL = 97919;
    static const int DEG_MAX = 10;
    static constexpr int DEG[] = { 10, 3, 0 };
    static constexpr int LEN[] = { 10, 12, 0 };
    static constexpr int POS[] = {
        20617, 6867,  14845, 11974, 22563, 190,   17207, 4052,  7406,  16007, 21448,
        14846, 2543,  23380, 16633, 20365, 16869, 13411, 19853, 795,   5200,  2330,
        2775,  23620, 20643, 10745, 14742, 6493,  14222, 20939, 9445,  9523,  12769,
        7332,  21792, 18717, 16397, 14016, 9481,  22162, 2922,  6427,  4497,  4116,
        17658, 2581,  14364, 3781,  18851, 22974, 10383, 2184,  1433,  3889,  12828,
        17424, 17580, 20936, 1390,  21374, 425,   2063,  22398, 20907, 9445,  14790,
        4457,  723,   7048,  4072,  11771, 9640,  23212, 9613,  12042, 8335,  21386,
        20129, 13521, 16301, 14867, 12501, 1086,  21526, 17701, 17731, 20907, 8790,
        19224, 5784,  7107,  19690, 17616, 5800,  9501,  23320, 16878, 794,   15931,
        17539, 4556,  21783, 1524,  20100, 11706, 23663, 2535,  15530, 6116,  12078,
        3867,  2663,  19629, 20246, 7024,  11748, 11426, 19802, 15942, 12333, 5316,
        11521, 3170,  17818, 2289,  23780, 16575, 6649,  16991, 13025, 20050, 10619,
        10250, 3944,  13063, 5656,
    };
};

struct DVB_S2X_TABLE_C10 {
    static const int M = 360;
    static const int N = 32400;
    static const int K = 10800;
    static const int LINKS_MIN_CN = 4;
    static const int LINKS_MAX_CN = 5;
    static const int LINKS_TOTAL = 107999;
    static const int DEG_MAX = 12;
    static constexpr int DEG[] = { 12, 3, 0 };
    static constexpr int LEN[] = { 10, 20, 0 };
    static constexpr int POS[] = {
        7416,  4093,  16722, 1023,  20586, 12219, 9175,  16284, 1554,  10113, 19849,
        17545, 13140, 3257,  2110,  13888, 3023,  1537,  1598,  15018, 18931, 13905,
        10617, 1014,  339,   14366, 3309,  15360, 18358, 3196,  4412,  6023,  7070,
        17380, 2777,  6691,  12720, 17634, 4141,  1400,  8247,  18201, 16077, 11314,
        11928, 3494,  3155,  2865,  21038, 6928,  3860,  1943,  20292, 6526,  12939,
        15182, 3957,  5651,  356,   2673,  20555, 17905, 5724,  13932, 1218,  17763,
        5912,  5164,  6233,  6220,  1277,  19209, 19190, 4498,  4950,  6645,  5482,
        5667,  13701, 16334, 15231, 735,   8589,  12344, 679,   17849, 17807, 16033,
        10181, 3368,  5778,  8275,  2736,  14042, 17506, 6005,  1576,  10259, 10525,
        3007,  16522, 697,   7726,  8641,  14323, 2893,  8168,  11070, 17270, 10180,
        18740, 847,   4969,  14715, 19316, 5530,  17428, 11193, 9861,  13562, 6156,
        18787, 10467, 2422,  3723,  10769, 8015,  18716, 13406, 5969,  15949, 3084,
        6855,  13990, 3764,  10351, 15779, 10392, 16078, 19034, 11279, 11747, 6608,
        4188,  19699, 8928,  8045,  4598,  7219,  11391, 19766, 11871, 5692,  7487,
        15905, 17621, 8554,  7751,  16516, 4981,  20250, 16146, 12524, 21364, 10793,
        17083, 2051,  8862,  1315,  6246,  7721,  18043, 16652, 5502,  1432,  5674,
        2224,  11257, 1312,  8453,
    };
};

#endif
